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.txt和http://PQR.com在2.txt。和结果 display http://PQR.com,这在两个文件中都很常见。因此,我如何才能仅显示不常见的文本(不取决于文本的大小写)?
由于您已经在使用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)
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |