我是Unix和Bash的新手,我可以在命令中使用一些帮助,该命令将大量相同的目录与数百个文本文件合并。目录中的所有文件名都是相同的,但不是每个文本文件中的所有行。
目标是合并目录,将每个文件的更新副本与合并的内容合并,并删除重复的行。
下面是一个非常基本的目录和预期输出示例:
Directory A-1
1.txt
2.txt
3.txt
Directory A-2
1.txt
2.txt
3.txt
End Result - Directory A
1.txt
2.txt
3.txt
下面是我正在处理的生成语法错误的命令行:
for each $file in A-1, cat A-1/$file A-2/$file |sort|uniq > A/$file
如果有人能为我提供适当的命令语法,它将合并目录并从每个单独的文件中删除所有重复行,我们将不胜感激。
发布于 2015-11-27 02:35:54
for f in A-1/*; do
bn="$(basename "$f")"
sort -u "$f" "A-2/$bn" > "A/$bn"
done
这假设A-1中的每个文件都有相同名称的A-2中的相应文件。它合并两个对应文件的内容,对它们进行排序,删除重复文件,并将输出保存在必须存在的A/中。
例如,假设您从以下内容开始:
mkdir -p A-1 A-2 A
(
echo a
echo b
echo c
) > A-1/a
(
echo b
echo c
echo d
) > A-2/a
运行上面的for循环将为您提供一个A/a
a
b
c
d
https://stackoverflow.com/questions/33949481
复制相似问题