我写了这个awk程序
awk '{x=$2-5; print $1, x, $3}' 它将每一行中的第二个数字减少5。
这非常好,当输入是这样的: number1 number2 number3 (即用空格分隔).The输出是number1编号2-5 number3。
现在,如果数字是分开的,我如何扩展该程序以实现相同的功能;而不是空格--有人能帮我吗?
例如,输入是
30;31;32
11;6;5
1;7;10然后是预期的输出。
30;26;32
11;1;5
1;2;10发布于 2022-01-25 14:00:05
你离我很近!
您只需更改FS和OFS变量,而awk将完成其余的操作:
awk 'BEGIN{FS=OFS=";"}
{x=$2-5; print $1, x, $3}' file
30;26;32
11;1;5
1;2;10阅读awk手册中的这些变量。
正如Ed在注释中所述,如果您知道输入和输出有相同数量的字段,也可以使用更多的惯用awk:
awk 'BEGIN{FS=OFS=";"}
{$2-=5; print}' 或者:
awk 'BEGIN{FS=OFS=";"}
{$2-=5} 1' # the 1 is True and awk reacts to a true by printinghttps://stackoverflow.com/questions/70849016
复制相似问题