为了账号安全,请及时绑定邮箱和手机立即绑定

awk gsub中使用特殊符号匹配的问题

awk gsub中使用特殊符号匹配的问题

慕神8447489 2019-03-16 15:40:15
我有一个文件b,记录的分隔符是3个字符:“'|'”,内容如下:a'|'b'|'c我想把“'|'”换成“*”,目标效果如下:a*b*c使用下面的代码:awk '{gsub(/\047\174\047/,"*")}1' b执行后没有效果。经过尝试,发现下面这个写法有效:awk '{gsub(/\047\|\047/,"*")}1' b虽然经过尝试问题解决了,但是不明白原因。请大神帮忙分析下?
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

你应该知道,在 awk 中被 // 包裹的是正则表达式,那么当你 gsub 的第一个参数是 /\047\174\047/ 时,其实是 /'|'/,这个正则的意思就很明确了,就是 一个 ' 或者 一个 ',和 /'/ 是等价的,所以结果就只将文本中的 单引号替换了。

查看完整回答
反对 回复 2019-03-16
?
交互式爱情

TA贡献1712条经验 获得超3个赞

下面那个可以的原因就很明显了,给的正则实际是 /'\|'/,也就是匹配 一个 ' 跟着一个 | 再跟着一个 '

查看完整回答
反对 回复 2019-03-16
  • 2 回答
  • 0 关注
  • 1403 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信