6

我怎么可以

ruby -pe "sub /.*{((\d+\.){3}).*/, '\115'" < file.txt

但如果我尝试scan而不是sub我得到

-e:1:in <main>': undefined methodscan' for main:Object (NoMethodError)

这很令人困惑,因为这两者sub都不是一种方法Object

我也尝试过 Perl 的方式,比如

ruby -ne "/.*/; puts $1" <file.txt

但这并没有成功。

我在哪里可以找到涵盖此内容的文档?

4

1 回答 1

9

sub是一个方法Kernel,一个模块,其实例方法是全局可用的。此版本的方法对包含上次读取的字符串的全局变量$_进行操作。gets

这是一种与 完全不同的方法String#sub,后者执行类似的过程,但使用显式字符串作为接收者,而不是隐式使用$_.

于 2013-09-30T21:51:32.817 回答