gpt4 book ai didi

awk - 删除数据直到字段中的某个字符

转载 作者:行者123 更新时间:2023-12-02 16:22:31 25 4
gpt4 key购买 nike

我的文件有 6 列,数据由空格分隔

cell  in  out  f  ty   le
A A1 Z A1 com 2
B A1,B Z AB com 0,2

我想从第 6 列中删除 0, 得到输出

cell  in  out  f  ty   le
A A1 Z A1 com 2
B A1,B Z AB com 2

我试过代码

awk '{sub(/\0,.*$/,"",$6);print $1,$2,$3,$4,$5,$6}' file

但这并没有奏效。

最佳答案

简单的解决方案是,根据您显示的示例。

awk '{sub(/^0,/,"",$6)} 1' Input_file

如果很少有逗号出现在行首或行尾的情况,那么您可以尝试按照 GNU awk 中显示的示例进行编写和测试。 .

awk '{gsub(/^,+0,+|,+0,+$/,"",$6);gsub(/,0,/,",",$6)} 1' Input_file

OP 尝试中的问题: OP 使用 .*0, 之后这是非常贪婪并且会匹配第 6 个字段的所有内容,因此它将第 6 个字段中的所有内容替换为 NULL。

修复 OP 的尝试: 我添加了逻辑来替换开始 0,和结尾 ,0第 6 个字段为 NULL。然后处理零之间的替换 ,0,, , 使解决方案在这里通用。

注意: 如果您的 Input_file 是 TAB 分隔的,则添加 BEGIN{FS=OFS="\t"} .

关于awk - 删除数据直到字段中的某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65235462/

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