次のコマンドに従って、ファイルの重複行を印刷できます。
uniq -d string file.txt
しかし、csvファイルでこれをどのように実行しますか?
csvファイルのフィールド1、2から重複行のみを印刷する必要があります。 - フィールド3は除外されます。
FS-","
たとえば、
spark2-thrift-sparkconf,spark.history.fs.logDirectory,{{spark_history_dir}}
spark2-thrift-sparkconf,spark.history.fs.logDirectory,true
spark2-thrift-sparkconf,spark.history.Log.logDirectory,true
spark2-thrift-sparkconf,spark.history.DF.logDirectory,true
予想される結果:
spark2-thrift-sparkconf,spark.history.fs.logDirectory,{{spark_history_dir}}
spark2-thrift-sparkconf,spark.history.fs.logDirectory,true
第二:
csvファイルから重複行を除外する方法(フィールド1、2からのみ重複行を削除することを意味)
予想出力:
spark2-thrift-sparkconf,spark.history.Log.logDirectory,true
spark2-thrift-sparkconf,spark.history.DF.logDirectory,true
ベストアンサー1
$ awk -F, 'NR==FNR{a[$1,$2]++; next} a[$1,$2]>1' file.txt file.txt
spark2-thrift-sparkconf,spark.history.fs.logDirectory,{{spark_history_dir}}
spark2-thrift-sparkconf,spark.history.fs.logDirectory,true
同じ入力ファイルを2回使用して両方のファイルを処理します。
NR==FNR{a[$1,$2]++; next}
最初の 2 つのフィールドをキーとして使用して、発生回数を保存します。a[$1,$2]>1
2回目のパスでカウントが1より大きい場合にのみ印刷
逆の場合は、条件確認を変更してください。
$ awk -F, 'NR==FNR{a[$1,$2]++; next} a[$1,$2]==1' file.txt file.txt
spark2-thrift-sparkconf,spark.history.Log.logDirectory,true
spark2-thrift-sparkconf,spark.history.DF.logDirectory,true