【发布时间】:2012-12-27 12:33:45
【问题描述】:
我有一个这样的文本文件:
$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s
我希望输出是这样的:
$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
我只想将字段 3 中的 100(一旦 100 包含在 $3 中)替换为 2000。如何使用awk 完成这项工作?
【问题讨论】:
-
jww 等等,awk 是一种编程语言。 en.wikipedia.org/wiki/AWK:“AWK 是一种专为文本处理而设计的编程语言,通常用作数据提取和报告工具。”
-
如果您想查找和替换更复杂的东西,我建议改用
perl -npe。例如cat test | perl -npe 's#^(\d+\s+\d+\s+\d*)(100)#$12000#'。使用awk是可行的,但你必须使用sub()或类似的功能,它很快就会变成完全无法维护的混乱。