此示例删除第五次出现的正则表达式:
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
答案 0 :(得分:2)
根据documentation,我能想到的其中一种方式:
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") }'
在目标字符串目标中搜索正则表达式的匹配项 正则表达式。如果 是一个以'g'或'G'开头的字符串(缩写为 “global”),然后替换regexp的所有匹配项。 否则,如何将其视为表示正则表达式匹配的数字 替换。如果没有提供目标,请使用$ 0。它返回修改后的 string作为函数和原始目标字符串的结果 没有改变。