我需要在第 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