bashコマンドとawkコマンドやその他のコマンドを使用して変更したいCSVファイルがあります。
たとえば、E列またはF列が空の場合、または値が0の場合は、B列をコピーしたいと思います。
AAAA, BBBB, CCCC, DDDD, EEEE, FFFF
11 12 13 14 15 0
出力:
AAAA, BBBB, CCCC, DDDD, EEEE, FFFF
11 12 13 14 15 12
どうすればいいですか?
アップデート:cat user.csvを実行しましたが、これが表示されました。
740.58,0,740.58,0,740.58
2452.84,0,2452.84,0,2452.84
898.23,0,898.23,0,898.23
227.57,0,227.57,0,227.57
735.02,0,735.02,0,735.02
640.5,0,640.5,0,640.5
469.31,0,469.31,0,469.31
3744.25,0,3744.25,0,3744.25
462.15,0,462.15,0,462.15
198.79,0,198.79,0,198.79
437.58,0,437.58,0,437.58
515.44,0,515.44,0,515.44
LibreOfficeではこんな感じ.
だから私がしたいのは、C列の情報をB列に変更することです。 B列のすべての情報が0であれば、0でなければ何も変更しないで説明します。
申し訳ありませんが、私の英語力はあまり良くありません:c
アップデート:ステートメントが次の場合:
if [[ $2 == 0 ]]; then echo "列 3 を列 2 にコピー" awk -F , 'BEGIN { OFS = FS } $2 == 0 { $2 = $3 } 1' user.csv > user1.csv else if [[ $4 == 0 ]] ; then echo "列 5 を 4 にコピー" awk -F , 'BEGIN { OFS = FS } $4 == 0 { $4 = $5 }' csv > user1.csv fi fi
ベストアンサー1
gawk '
BEGIN {FS = OFS = "\t"}
!$5 {$5 = $2}
!$6 {$6 = $2}
1
' input.tsv
出力が正しい場合はもう一度実行してください。gawk -i inplace '...' input.tsv