首页 > 解决方案 > 将文件内容与其他文件名匹配以提取和合并内容

问题描述

我有两个目录。

在 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

谢谢!

标签: linuxawksed

解决方案


这可能对您有用(GNU 并行):

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

使用两次并行调用,第一次dir_1在第二次并行中遍历并管道其输出。这cat是输入文件并输出dir_3保留第一次并行调用的原始名称的结果。

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


推荐阅读