linux - 将文件内容与其他文件名匹配以提取和合并内容

标签 linux awk sed

我有两个目录。

在directory_1中,我有很多.txt文件

这些文件的内容(例如file1.txt)是字符列表

file1.txt 
--

rer_098
dfrkk9

在directory_2中,我有很多文件,其中两个是“rer_098”和“dfrkk9”。

这些文件的内容如下:

rer_098
--

>123_nbd
sasert
>456_nbd
ffjko
dfrkk9
--

>789_nbd
figyi
>012_nbd
jjjygk

现在在一个单独的输出目录(directory_3)中,对于上面的示例,我想要如下输出文件:

file1.txt
--

>123_nbd
sasert
>456_nbd
ffjko
>789_nbd
figyi
>012_nbd
jjjygk

file2.txt 依此类推

谢谢!

最佳答案

这可能适合你(GNU 并行):

parallel 'cat {} | parallel -I@@ cat dir_2/@@ > dir_3/{/}' ::: dir_1/*.txt

使用两次并行调用,第一次遍历 dir_1 并将其输出传输到第二次并行中。此cat输入文件并输出结果dir_3,保留第一次并行调用的原始名称。

注意使用 -I 选项将参数分隔符从默认的 {} 重命名为 @@

关于linux - 将文件内容与其他文件名匹配以提取和合并内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61994460/

相关文章:

bash - 如何只选择我的 AWK 脚本中的前 10 行

date - 如何获取当前日期和时间并在包含 'Hello'的每行末尾附加

regex - 使用 sed 将一个子字符串替换为另一个子字符串

bash - 比较awk中的连续行和多列并随机选择重复行之一

c - 如何使用 RS485 将数据传输到 BeagleBone Black

python - 同时发送消息python脚本

linux - 如何在 Linux 中将一个字符串附加到多个文件

awk - 根据第一列内容分隔字段,在第二列中匹配并在awk中减去第四列值

bash - awk 和 sed 拆分文件

linux - grep 搜索模式中间的上限