このようなファイルが与えられると
value,value,value,value
value1,value1,value,value1
value2,value2,value,value2
どうすればこれを次のように変更できますか?
value,value,value,value
value1,value1, ,value1
value2,value2, ,value2
デフォルトでは、列3の重複値をマージして最初の行に表示し、他のデータもcsvに履歴として保持します。
私はそれを試しましたが、cat file | sort -u -t, -k3
動作しません。
答え1
3列だけでなく
$ cat file.csv
aaa,bbb,ccc,ddd
aat,bbk,ccc,ddd
aaa,bbk,cc3,dd4
aaa,bbb,ccc,ddd
$ awk '
BEGIN {FS = OFS = ","}
NR == 1 {for (i=1; i<=NF; i++) prev[i] = $i}
NR > 1 {
for (i=1; i<=NF; i++)
if ($i == prev[i])
gsub(/./, " ", $i)
else
prev[i] = $i
}
1
' file.csv
aaa,bbb,ccc,ddd
aat,bbk, ,
aaa, ,cc3,dd4
,bbb,ccc,ddd