1

我有一个巨大的文件 dat 文件(逗号分隔)。在其中我必须用“foo”替换第二列(带双引号,如果第三列的值以“AB(带引号)

这是示例 input.dat

"5000","ABC","AB8989"
"3000","   ","AB7676"
"2000","   ","A07444"
"4000","   ","BN0909"

这是我正在使用的命令:

awk -F, -vOFS=, '{if($3 ~/^"AB/){$2="foo"}print;}' input.dat

理想情况下,这个命令应该只匹配第一两行,但我不知道为什么它也匹配第三行。看起来它不是在 reg ex 中的 A 之后读取 B。请建议。

4

1 回答 1

1

这对我来说看起来不错(我已经缩短了一些),你在什么系统上?

awk -F, -vOFS=, '$3 ~/^"AB/{$2="\"foo\""}1' input.dat
"5000","foo","AB8989"
"3000","foo","AB7676"
"2000","   ","A07444"
"4000","   ","BN0909"

PS我添加了双引号"foo"

于 2013-10-22T05:21:12.293 回答