我们说我有"文件1"内容如下:
123|abc|def|
456|ghi|jkl|
789|mno|pqr|
我有"文件2"内容如下:
123|abc|def|
456|ghi|jkl|
789|mno|pqr|
134|rst|uvw|
正如你所看到的那样" 134"因此,我的shell脚本应该创建一个文件3,其中包含如下内容。
134|rst|uvw|
我怎样才能做到这一点?
答案 0 :(得分:1)
在awk中:
$ awk -F\| 'NR==FNR{a[$1];next}$1 in a==0' file1 file2 # > file3
134|rst|uvw|
说明:
$ awk -F\| ' # field separator is |
NR==FNR { # process first file
a[$1] # store the velue in the first field to hash a
next # next record
} # below, processing the second file
$1 in a==0 # if first field is not found in the hash a, output the record
' file1 file2 # > file3 redirect to file3 if desired, else it's on your screen
基本上,它将file1
的第一个字段值存储到哈希a
,而处理file2
会打印出a
中找不到第一个字段的记录。所以它与grep
解决方案不同,后者比较整个记录,而不仅仅是一个字段。