如何从两个文件中提取不常见的不区分大小写的文本?

Jaf*_*son 4 command-line text-processing 16.04

我试图从文件中提取不常见的文本,我试过这个:

awk 'FNR==NR {a[$0]++; next} !a[$0]' 1.txt 2.txt
http://PQR.com
http://example.com
Run Code Online (Sandbox Code Playgroud)

以下是输入文件:

File: 1.txt
http://google.com
http://GOOGLE.com
http://example1.com
http://seperate.com
http://pqr.com
File: 2.txt
http://PQR.com
http://example.com
http://google.com
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,http://pqr.com在文件中提供1.txthttp://PQR.com2.txt。和结果 display http://PQR.com,这在两个文件中都很常见。因此,我如何才能仅显示不常见的文本(不取决于文本的大小写)?

mur*_*uru 7

由于您已经在使用awk,请使用tolower小写行:

awk 'FNR==NR {a[tolower($0)]++; next} !a[tolower($0)]' foo bar
Run Code Online (Sandbox Code Playgroud)

但是,这只会打印bar不在foo.

与之比较:

$ sort -f bar foo | uniq -iu
http://example.com
http://example1.com
http://seperate.com
Run Code Online (Sandbox Code Playgroud)

使用awk,您还需要打印只看到一次的每一行:

$ awk '{a[tolower($0)]++} END {for (i in a) if (a[i] == 1) print i}' foo bar
http://seperate.com
http://example.com
http://example1.com
Run Code Online (Sandbox Code Playgroud)