【发布时间】:2022-01-25 12:56:44
【问题描述】:
我写了这个 awk 程序
awk '{x=$2-5; print $1, x, $3}'
将每行中的第二个数字减少 5。
当输入如下:number1 number2 number3(即用空格分隔)时,这工作得很好。然后输出是 number1 number2-5 number3。
现在,如果数字由 ; 分隔,我如何扩展该程序以实现相同的功能而不是空格 - 任何人都可以帮助我吗?
例如输入是
30;31;32
11;6;5
1;7;10
那么预期的输出是
30;26;32
11;1;5
1;2;10
【问题讨论】:
-
请edit您的问题并添加更多信息。您的输入文件是否同时包含
;和|分隔符?显示一些示例输入和预期输出,均格式化为代码块。 -
在 awk 手册页中查找
FS和OFS。 -
您好,谢谢您的回答。虽然我有多行(从问题中不清楚,我的错误,对不起) - 那么这仍然是一个解决方案吗?
-
是的,你拥有的行数与每行字段的分隔方式无关。
-
嗨,Azes,欢迎来到令人生畏的 awk 世界。 awk 是一种非常强大但经常被低估的语言。大多数文档非常详尽,不适合直接使用。所以我建议看一下Awk one-liners explained,它教你 awk 并解释它。它并不总是能满足您的直接需求,但它肯定会在您的道路上为您提供帮助。