Linux

尋找一個棘手的單行來獲得 awk 輸出的差異

  • July 26, 2012

可以說我有兩個文件,如下所示:

file1

a 23
b 34
c 47

file2
a justin_beiber_sucks
b segmentation fault
c jackson
d nop

現在我想要的是獲得兩個文件的第一列的差異。我現在正在這樣做

$cat file1 awk '{print $1}'> f1
$cat file2 awk '{print $1}'> f2
$diff -u f1 f2

但這種方法感覺遲鈍。那裡有什麼棘手的方法嗎?

問題是我總是將pipes 視為一維的東西,但在這裡它是二維的。我的意思是 diff 的輸入必須同時來自兩個不同的來源。

起點可能是 awk 腳本將讀取這兩個文件,進行過濾並將結果保存在臨時關聯數組中,接下來它將呼叫 diff 並提供其輸入。

嘗試:

diff -u <(awk '{print $1}' file-one) <(awk '{print $1}' file-two)

很有可能join會做你想做的事:

join <(sort file1) <(sort file2)

但是由於您沒有說出您真正想要完成的工作,因此很難確定哪些選項可能是合適的。

引用自:https://serverfault.com/questions/411206