什么是ruby-a命令行开关?
从页面:什么是ruby-a命令行开关?,ruby,string,command-line,Ruby,String,Command Line,从页面: -a与-n或-p一起使用时打开自动拆分模式。 在自动拆分模式下,Ruby执行 $F=$\u.split 在每个循环的开始处。 我想到了一些问题: 如果使用-a而不使用-n或-p,会发生什么情况 什么是$F 循环结束时会发生什么 如何控制选择哪个字符进行拆分 如何使用-a 从另一个: $F指定-a时从split接收输出的变量。 如果指定了-a命令行选项,则设置此变量 以及-p或-n选项。 我仍然不确定-a开关是什么。如果您能解释一下,我将不胜感激,但请再举一些例子 我尝试过的一些
-a与-n或-p一起使用时打开自动拆分模式。
在自动拆分模式下,Ruby执行
$F=$\u.split
在每个循环的开始处。
我想到了一些问题:
- 如果使用
而不使用-a
或-n
,会发生什么情况-p
- 什么是
$F
- 循环结束时会发生什么
- 如何控制选择哪个字符进行拆分
- 如何使用
-a
$F指定-a时从split接收输出的变量。
如果指定了-a命令行选项,则设置此变量
以及-p或-n选项。
我仍然不确定-a
开关是什么。如果您能解释一下,我将不胜感激,但请再举一些例子
我尝试过的一些事情:
$echo foo_bar|ruby-ae
ruby:没有为-e指定代码(RuntimeError)
$echo foo_bar|ruby-ap
$echo foo_bar|ruby-ap'$'
ruby:没有这样的文件或目录--$\(LoadError)
自动拆分模式通过-a
开关启用。它启用默认情况下的文本处理方式。在自动拆分模式下,ruby将读取作为参数或stdin提供的文件 一次一行,每行:
$ ruby -F: -a -n -e 'puts $F[2]' file
TGH
YTH
GHKIO
-F
标志指定)自动将行$\ucode>拆分为字段
$F
记录
(记录
是行,除非更改),并且每行中有许多分隔的字段
的表格文本文件非常有用。
例如,考虑<代码>文件>代码>内容:
ADG:YUF:TGH
UIY:POG:YTH
GHJUR:HJKL:GHKIO
然后,ruby-F:-a-n-e'put$F[2]”文件为每行打印第三个字段:
$ ruby -F: -a -n -e 'puts $F[2]' file
TGH
YTH
GHKIO
在这种情况下,-F:
将字段分隔符设置为:
$F
是拆分记录($\UU
)后字段所在的数组。拆分后,对每行执行-e
之后的操作
ruby
cli开关与perl
的开关非常相似。perl
cli使此功能更加方便,请参阅。例如,由于-a
在没有-n
(或-p
)的情况下是不有用的,因此在perl
中,-F
隐式启用-a
,这反过来又启用了-n
。ruby的情况并非如此,所有开关都必须显式传递。
对于可以通过这种处理完成的好事情的例子,请查找
另外,ruby
cli遵循unix的传递约定:
传统上,UNIX命令行选项由破折号组成,后跟一个或多个小写字母
因此,可以将-a
和-n
和-e
组合起来以获得相同的结果:
$ ruby -F: -ane 'puts $F[2]' file
TGH
YTH
GHKIO
如果这是有趣的,看看其他一些