使用单行正则表达式,您可以使用-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
答案 0 :(得分:2)
使用gets(nil)
可以为您节省6个字符:)
ruby -i -e 'print gets(nil).sub(/<.*>/m, "d")' file.txt
来自gets
docs:
可选参数指定记录分隔符。分隔符包含在每条记录的内容中。 nil的分隔符读取整个内容。 [...]