前提・実現したいこと
awkコマンドを使ってテキストファイルの加工を行っています。
以下質問
「ある一つの列で同じ値を持つもの同士を1行にまとめるコード」
https://teratail.com/questions/160950
とほぼ同じことを実現したいのですが、若干条件が違います。
どのようなコマンドにすればよいか教えていただければと思います。
よろしくお願いします。
条件:
・1列目に同じ値をもつ行を、元のファイルでの順番を維持したまま1行にまとめる
・1行にまとめられたもの同士はスペースで区切られる
・まとめたあとは1列目の値は残したい
log.txt(元ファイル)
aaaa abc aaaa def aaaa ghi bbbb ABC cccc DEFG dddd HIJ dddd KLMN
log2.txt(加工後ファイル)
aaaa abc,def,ghi bbbb ABC cccc DEFG dddd HIJ,KLMN
発生している問題・エラーメッセージ
参考にした質問の回答欄を元にコマンドを作ってみたのですがすべてddddになってしまいました。
$ cat log.txt | awk 'BEGIN{FS=" ";OFS=" ";}{k=$1;v=$2","$3;if(b[k]){b[k]=b[k]" "v}else{a[i++]=k;b[k]=v}}END{for(i in a){print $1,b[a[i]]}}' > log2.txt
dddd abc,def,ghi dddd ABC dddd DEFG dddd HIJ,KLMN
補足情報(FW/ツールのバージョンなど)
CentOS6です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/04 09:23