如何在Shell脚本中区分两个文件

时间:2018-09-06 09:15:12

标签: bash

我有一个文件a.txt,其中有

a,20
b,30
c,40

另一个b.txt

a,40
b,60
d,3

我需要遍历第一列,并检查第二个文件中是否不存在变量(此处不存在c)并发送具有该变量名的邮件。

2 个答案:

答案 0 :(得分:0)

要仅提取第一列,可以使用cut

cut -d, -f1 file.txt
  • -d指定分隔符
  • -f指定要提取的列

要检查一对文件共有的行,请使用comm

comm file1 file2

comm输出三列:第一个列出了file1独有的内容,第二个列出了file2独有的内容,第二个都列出了两者。您可以通过指定列号作为参数来告诉comm省略列。不过,comm需要对输入文件进行排序。我通常在进行排序时将$LC_ALL设置为C以避免语言环境的影响。

所以,您的问题的答案是

comm -23 <(cut -f1 -d, a.txt | LC_ALL=C sort) <(cut -f1 -d, b.txt | LC_ALL=C sort)

答案 1 :(得分:0)

可能的"b"解决方案:

awk