![列の重複値のマージ[閉じる]](https://linux33.com/image/215881/%E5%88%97%E3%81%AE%E9%87%8D%E8%A4%87%E5%80%A4%E3%81%AE%E3%83%9E%E3%83%BC%E3%82%B8%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
このようなファイルが与えられると
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