Ruby相当于Perls一行字符串替换器

时间:2016-07-14 15:17:52

标签: ruby perl terminal

使用perl,你可以这样做:

$ perl -pi -e 's/foo/bar/g' *.txt

将在当前目录中的所有* .txt文件中用“bar”替换字符串“foo”。

我喜欢这个,但我想知道使用Ruby是否可以做同样的事情。

1 个答案:

答案 0 :(得分:7)

是的。 Ruby具有大多数Perl命令行选项的等价物,其中许多都是相同的。

stack

以下是$ ruby -pi -e 'gsub /foo/, "bar"' *.txt 的相关文档:

  
      
  • man ruby - 指定就地编辑模式。扩展,   如果指定,则添加到旧文件名以制作备份副本。对于   例如:

    -i extension
  •   
  • % echo matz > /tmp/junk % cat /tmp/junk matz % ruby -p -i.bak -e '$_.upcase!' /tmp/junk % cat /tmp/junk MATZ % cat /tmp/junk.bak matz - 使Ruby假定您的周围循环   脚本,它使得迭代文件名参数有点像   -nsed -n

         
    awk
  •   
  • while gets ... end - 行为与-p切换大致相同,但打印的值为   循环的每一端都有变量-n。例如:

    $_
  •   

我的上述代码使用Kernel#gsub,该版本仅在% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ / -p模式下可用。根据文档:

  

gsub(模式,替换)→$ _
   gsub(pattern){| ... |阻止}→$ _

     

相当于-n,但如果$_.gsub...将会更新   发生了替代。仅在$_ / -p命令行选项时可用   指定。

还有一些其他类似的内核方法,有用的知识:chompchop和(自然)sub

结帐-n;有很多很棒的功能。