根據第一個逗號之前的匹配刪除重複行數

根據第一個逗號之前的匹配刪除重複行數

我在 Linux Centos 7 伺服器上有大文本,我想刪除第一個逗號之前匹配的行

輸入:

112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22

輸出:

410410,22,22,22

答案1

這裡有一些awk雙通道解決方案。第一遍將欄位 1 的頻率儲存到陣列中x。如果x將欄位 1 的頻率報告為 1,則第二遍將列印一行

awk -F, 'first_pass{x[$1]++; next}; x[$1] == 1' first_pass=1 file first_pass=0 file

awk -F, 'BEGIN{while ((getline<ARGV[1]) > 0)x[$1]++}; x[$1] == 1' file

答案2

短GNUdatamash+sed組合:

datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p'

上述管道的第一個進程將計算第一個字段值的每組中的項目數(按 分組-g1),並將結果計數添加為最後一個字段

相關內容