質問: awk:列を分割し、区切り文字の左側を印刷し、csvの中央に貼り付けます 入力ファイル:aaa, bbb:xxx, ccc, ddd, eee, fff, ggg, hhh 出力は次のようになります。aaa, bbb, bbb:xxx, ccc, ddd, eee, fff, ggg, hhh 私は次のようなものについて考えました:awk -f, '{n=split($2,a,":"); a[n]} {$2=$nf","$2}1' ofs=, ただし、最初の「分割」では、区切り文字の左側ではなく右側を使用し、最後のコピーではbbbではなくhhhをコピーします。
回答: 簡単なsedオプションsed -r 's/, \w+/&&/' \w+式は英数字(例ではbbb)に一致しますが、句読点や空白には一致しません。 &は一致全体を表します。例echo 'aaa, bbb:xxx, ccc, ddd, eee, fff, ggg, hhh' | sed -r 's/, \w+/&&/' aaa, bbb, bbb:xxx, ccc, ddd, eee, fff, ggg, hhh