比较多个文档中的某些行

比较多个文档中的某些行

我想比较多个文档中的某些行。我尝试使用 diff 和 comm,但条件是这些,

  1. 这些文档位于不同的工作目录/文件夹中,我可以在此处使用通配符,例如 (*.doc)

    File 1  ---> /home/user/file1/1.doc
    File 2  ---> /home/user/file2/2.doc
    File 3  ---> /home/user/file3/3.doc
    
  2. 接下来是比较所有文档 (*.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. 最后是将这些行生成为另一个文件,无论它们相同还是不同。

答案1

据我从你的问题中了解到的,你只想从每个文件中获取第 2 行和第 3 行并将其输出到一个新文件中。这是一个执行此操作的脚本:

find . -name "*.doc" | xargs awk 'FNR==2||FNR==3{print}' > new_file

xargsawk处理 . 输出的每个文件findawk将从提供的每个新文件中打印第 2 行和第 3 行。

如果路径中可能有空格:

find . -name "*.doc" -print0 | xargs -0 awk 'FNR==2||FNR==3{print}' > new_file

相关内容