什么是ruby -a命令行开关?
从
man页面:
-a Turns on auto-split mode when used with -n or -p. In auto-split mode,Ruby executes $F = $_.split at beginning of each loop. 有些问题浮现在脑海中: >如果在没有-n或-p的情况下使用-a会发生什么? 从另一个reference page: $F The variable that receives the output from split when -a is specified. This variable is set if the -a command-line option is specified along with the -p or -n option. 我还不确定-a开关是什么.会很感激解释,但会更多地欣赏一些例子. 我试过的一些事情: $echo foo_bar_bar | ruby -ae ruby: no code specified for -e (RuntimeError) $echo foo_bar_bar | ruby -ap $echo foo_bar_bar | ruby -ap '$_' ruby: No such file or directory -- $_ (LoadError) 解决方法
使用-a开关启用自动分割模式.它支持
awk 默认执行的文本处理.
在自动分割模式下,ruby将读取作为参数或stdin给出的文件 一次一行,每行一行: >根据字段分隔符(由-F标志指定)自动将行$_分割为字段 处理完所有行后,程序退出或执行 自动分割模式对于处理具有许多记录的表格文本文件(记录是除非更改了record separator的行)以及每行中的多个分隔字段非常有用. 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是分割后记录($_)后字段的数组.在分割后,每行执行-e后的操作. ruby cli开关非常类似于perl. perl cli使这个特性更加方便,见 此外,ruby cli遵循通过command-line options的unix约定:
因此可以组合-a和-n switches和-e flag来实现相同的结果: $ruby -F: -ane 'puts $F[2]' file TGH YTH GHKIO 如果这很有趣,请查看其他一些 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |