gpt4 book ai didi

awk - 如何使用 `awk` 以便我可以有条件地只更改行中的一个或两个字段?

转载 作者:行者123 更新时间:2023-12-04 05:54:43 24 4
gpt4 key购买 nike

我有一个包含 16 个字段的制表符分隔文件。我可以使用 awk 有条件地更改一个或多个字段并将整行打印为输出吗?例如,根据第一个字段中的值,我想说将特定数字添加到字段 4 等等。但作为输出,我必须打印整行。如果是,我想知道如何。

最佳答案

是的,这是一种方法:

awk '$1 == "ALTER" { $5=$5+5 } 1'

使用 etuardu 的示例文件,这会产生

ALTER xx yy zz 15 10
NOALT aa bb cc 20 20
ALTER 11 22 33 35 30

这是它的工作原理。有两种情况,表示为 awk 模式和 Action 。首先,该模式是对第一个字段的测试,看它是否等于 "ALTER",如果模式计算结​​果为真,则调用修改第五个字段的操作。第二种模式是 final 1;它始终为真,因此执行隐式 print 操作。

此解决方案的一个怪癖:输入中读取的字段分隔符不必是输出中的字段分隔符。使用上面的简单形式,输入的字段分隔符被视为空格,而单个空格被写入输出;如果这不是您想要的,请将 FSOFS 设置为特定值。但是,只有字段更改的行才会有新的字段分隔符,因此像 '$1=$1' 这样的空操作将强制重建所有记录(这是更改字段分隔符的便捷方法,只需使用 $1=$1).

关于awk - 如何使用 `awk` 以便我可以有条件地只更改行中的一个或两个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com