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