Ruby 就地多行正则表达式替换的Shell命令

Ruby 就地多行正则表达式替换的Shell命令,ruby,regex,Ruby,Regex,对于单行正则表达式,您可以使用-p和$\uuux: $ cat file.txt <a a> c $ ruby -i -pe '$_.sub!("a", "b")' file.txt $ cat file.txt <b b> c $cat file.txt C $ruby-i-pe'$\ sub!(“a”、“b”)file.txt $cat file.txt C 有没有什么简单的方法来取代多行模式?我现在用的是这样的东西: $ ruby -i -e 'print *r

对于单行正则表达式,您可以使用
-p
$\uuux

$ cat file.txt
<a
a>
c
$ ruby -i -pe '$_.sub!("a", "b")' file.txt
$ cat file.txt
<b
b>
c
$cat file.txt
C
$ruby-i-pe'$\ sub!(“a”、“b”)file.txt
$cat file.txt
C
有没有什么简单的方法来取代多行模式?我现在用的是这样的东西:

$ ruby -i -e 'print *readlines.join.sub(/<.*>/m, "d")' file.txt
$ cat file.txt
d
c
$ruby-i-e'print*readlines.join.sub(//m,“d”)'file.txt
$cat file.txt
D
C
使用
获取(nil)
可为您节省多达6个字符:)

ruby-i-e'print-get(nil).sub(//m,“d”)'file.txt
获取

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

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