![](/img/trans.png)
[英]How to use Ruby's gsub function to replace excessive '\n' on a string
[英]Is it possible to use alternate delimiters for awk's gsub function?
考虑以下awk
替换。
echo 'hello/bar/goo' | awk '{gsub(/\//,"foo"); print}'
输出如下。
hellofoobarfoogoo
注意,我们必须逃出/
在第一个参数gsub
因为/
是正则表达式中awk的默认分隔符gsub
功能。
考虑到我们可以通过以下分隔符更改来解决sed
的相同问题,我想知道gsub
是否可以实现相同的目的。
echo 'hello/bar/goo' | sed 's!/!foo!g'
我尝试了以下两种方法,但是它们会导致语法错误。
echo 'hello/bar/goo' | awk '{gsub(!/!,"foo"); print}'
awk: cmd. line:1: {gsub(!/!,"foo"); print}
awk: cmd. line:1: ^ unterminated regexp
awk: cmd. line:2: {gsub(!/!,"foo"); print}
awk: cmd. line:2: ^ unexpected newline or end of string
echo 'hello/bar/goo' | awk '{gsub(|/|,"foo"); print}'
awk: cmd. line:1: {gsub(|/|,"foo"); print}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {gsub(|/|,"foo"); print}
awk: cmd. line:1: ^ unterminated regexp
我可以在awk
设置一些选项来允许gsub
使用替代定界符吗?
如果是这样,允许的替代定界符是什么?
您可以使用双引号作为分隔符。
echo 'hello/bar/goo' | awk '{gsub("/","foo"); print}'
但是在处理反斜杠时要小心,因为您需要依次使用四个反斜杠才能匹配单个反斜杠。
$ echo 'hello/bar\goo' | awk '{gsub("\\\\","foo"); print}'
hello/barfoogoo
/
awk
只有正则表达式的分隔符是/
,但是您可以像Avinash所示的那样,搜索字符串"something"
。 没有其他选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.