列 4 で値 2 を探し、列 6 を一致する場所ごとに先行する "-" 記号に置き換える必要があります。
csvファイルがあるとします - file1はこんな感じです。
abc,0,def,1234,ijk
xyz,2,def,2345,abc
ijk,2,def,5678,ijl
次の出力を提供するには正規表現が必要です。
abc,0,def,1234,ijk
xyz,2,def,-2345,abc
ijk,2,def,-5678,ijl
どのように使用しますかawk
?sed
またはperl
答え1
解決策awk
:
$ awk -F',' '$2 == 2 {$4 = "-"$4}1' OFS=',' file
abc,0,def,1234,ijk
xyz,2,def,-2345,abc
ijk,2,def,-5678,ijl
同等perl
:
$ perl -F',' -anle '$F[3] = "-".$F[3] if $F[1] == 2; print join ",", @F' file