1

此示例删除了第五次出现的正则表达式:

printf "%s " $(seq 9) | gawk '{ print gensub(/[0-9]/,"","5") }'
1 2 3 4  6 7 8 9 

此示例删除了正则表达式的第六个实例:

printf "%s " $(seq 9) | gawk '{ print gensub(/[0-9]/,"","6") }'
1 2 3 4 5  7 8 9 

是否可以将上述示例保存在一个中?我试过了,但它不起作用:

printf "%s " $(seq 9) | gawk '{ print gensub(/[0-9]/,"","5|6") }'
 2 3 4 5 6 7 8 9 

我要打印:

1 2 3 4    7 8 9
4

1 回答 1

2

根据文档,我能想到的方法之一:

printf "%s " $(seq 9) | gawk 'END{ print gensub(/[0-9]/,"","5",gensub(/[0-9]/,"","5")) }'

另一种方式(使用您非常具体的输入):

printf "%s " $(seq 9) | gawk 'END { print gensub(/[0-9] [0-9]/,"","3") }'

在目标字符串 target 中搜索正则表达式 regexp 的匹配项。如果字符串以'g'或'G'(“global”的缩写)开头,则用replacement替换正则表达式的所有匹配项 否则,how 被视为一个数字,指示要替换哪个匹配的正则表达式。如果没有提供目标,则使用 $0。它返回修改后的字符串作为函数的结果,原始目标字符串没有改变。

于 2012-12-16T13:03:13.257 回答