Shell命令用于就地多行正则表达式替换

时间:2013-02-02 20:49:26

标签: ruby regex

使用单行正则表达式,您可以使用-p$_.sub!

$ cat file.txt
<a
a>
c
$ ruby -i -pe '$_.sub!("a", "b")' file.txt
$ cat file.txt
<b
b>
c

有没有简短的方法来替换多线模式?我目前使用的是这样的东西:

$ ruby -i -e 'print *readlines.join.sub(/<.*>/m, "d")' file.txt
$ cat file.txt
d
c

1 个答案:

答案 0 :(得分:2)

使用gets(nil)可以为您节省6个字符:)

ruby -i -e 'print gets(nil).sub(/<.*>/m, "d")' file.txt

来自gets docs

  
    

可选参数指定记录分隔符。分隔符包含在每条记录的内容中。 nil的分隔符读取整个内容。 [...]