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
2パスのソリューションをいくつか紹介しますawk
。最初のパスでは、フィールド1の頻度を配列に格納します。2番目のパスでは、フィールド1の頻度が1であると報告されたx
場合は行を出力します。 x
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
結果のカウントを最後のフィールドとして追加します。