Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是ruby-a命令行开关?_Ruby_String_Command Line - Fatal编程技术网

什么是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
    
    如果这是有趣的,看看其他一些