我想比较多个文档中的某些行。我尝试使用 diff 和 comm,但条件是这些,
这些文档位于不同的工作目录/文件夹中,我可以在此处使用通配符,例如 (*.doc)
File 1 ---> /home/user/file1/1.doc File 2 ---> /home/user/file2/2.doc File 3 ---> /home/user/file3/3.doc
接下来是比较所有文档 (*.doc) 中的特定行(2 到 3 行)
例如,我想获取以下文档的第 2 行(年龄)和第 3 行(性别)。
1.doc
Name: abc
Age: 123
Gender: m
Contact No.: 222 2222
2.doc
Name: bca
Age: 321
Gender: F
Contact No.: 333 3333
3.doc
Name: bca
Age: 321
Gender: F
Contact No.: 333 3333
- 最后是将这些行生成为另一个文件,无论它们相同还是不同。
答案1
据我从你的问题中了解到的,你只想从每个文件中获取第 2 行和第 3 行并将其输出到一个新文件中。这是一个执行此操作的脚本:
find . -name "*.doc" | xargs awk 'FNR==2||FNR==3{print}' > new_file
xargs
将awk
处理 . 输出的每个文件find
。awk
将从提供的每个新文件中打印第 2 行和第 3 行。
如果路径中可能有空格:
find . -name "*.doc" -print0 | xargs -0 awk 'FNR==2||FNR==3{print}' > new_file