小编Giu*_*rio的帖子

如何仅在 awk 或 bash 的列/字段中删除特定字符后的字符串?

我有一个带有制表符分隔字段(或列)的文件,如下所示:

cat abc_table.txt
a   b   c
1   11;qqw  213
2   22  222
3   333;rs2 83838
Run Code Online (Sandbox Code Playgroud)

我想删除“;”之后的所有内容 仅在第二个字段上。

我试过

awk 'BEGIN{FS=OFS="\t"} NR>=1 && sub (/;[*]/,"",$2){print $0}' abc_table.txt
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。我也尝试过 sed:

 's/;.*//g' abc_table.txt
Run Code Online (Sandbox Code Playgroud)

但它也会删除第三个字段中的字符串:

a   b   c
1   11
2   22  222
3   333
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

a   b   c
1   11  213
2   22  222
3   333 83838
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我,我将不胜感激!

awk sed

6
推荐指数
1
解决办法
83
查看次数

标签 统计

awk ×1

sed ×1