使用 awk 替换正则表达式模式

新手上路,请多包涵

我正在尝试编写一个正则表达式来用空格替换文件中存在的一个或多个“+”符号。我尝试了以下方法:

  echo This++++this+++is+not++done | awk '{ sub(/\++/, " "); print }'
 This this+++is+not++done

预期的:

 This this is not done

任何想法为什么这不起作用?

原文由 Ajay Nair 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 982
2 个回答

使用 gsub 进行全局替换:

 echo This++++this+++is+not++done | awk '{gsub(/\++/," ");}1'

sub 函数只替换第一个匹配,替换所有匹配使用 gsub

原文由 Guru 发布,翻译遵循 CC BY-SA 3.0 许可协议

或者 tr 命令:

 echo This++++this+++is+not++done | tr -s '+' ' '

原文由 radical7 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题