什么是ruby -a命令行开关?

什么是ruby -a命令行开关?,第1张

概述从 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的情况下使用 从 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会发生什么?
>什么是$F?
>循环结束时会发生什么?
>如何控制选择哪个角色进行拆分?
> -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 -aeruby: 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标志指定)自动将行$_分割为字段
>将结果分配给名为$F的变量
>通过命令行提供 *** 作.

处理完所有行后,程序退出或执行END block.请参阅此答案以获取example.

自动分割模式对于处理具有许多记录的表格文本文件(记录是除非更改了record separator的行)以及每行中的多个分隔字段非常有用.
例如,考虑一个包含内容的文件:

ADG:YUF:TGHUIY:POG:YTHGHJUR:HJKL:GHKIO

然后ruby -F:-a -n -e’put $F [2]’文件打印每行的第三个字段:

$ruby -F: -a -n -e 'puts $F[2]' fileTGHYTHGHKIO

在这种情况下,-F:将字段分隔符设置为:. $F是分割后记录($_)后字段的数组.在分割后,每行执行-e后的 *** 作.

ruby cli开关非常类似于perl. perl cli使这个特性更加方便,见perldoc perlrun.例如,由于-a在没有-n(或-p)的情况下没用,在perl中,-F使能-a隐式,后者又启用-n.对于ruby不是这种情况,必须明确传递所有开关.
有关使用此类处理可以完成的好东西的示例,请查看awk one liners.

此外,ruby cli遵循通过command-line options的unix约定:

Traditionally,UNIX command-line options consist of a dash,followed by one or more lowercase letters.

因此可以组合-a和-n switches和-e flag来实现相同的结果:

$ruby -F: -ane 'puts $F[2]' fileTGHYTHGHKIO

如果这很有趣,请查看其他一些ruby one liners.

总结

以上是内存溢出为你收集整理的什么是ruby -a命令行开关?全部内容,希望文章能够帮你解决什么是ruby -a命令行开关?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存