我需要将脚本中的命令输出读入数组.该命令例如是:
ps aux | grep | grep | x
Run Code Online (Sandbox Code Playgroud)
并且它按行给出输出,如下所示:
10
20
30
Run Code Online (Sandbox Code Playgroud)
我需要将命令输出中的值读入数组,然后如果数组的大小小于3,我将做一些工作.
在GNU Awk 的 4.1.2 Record Splitting with 中,gawk我们可以阅读:
当
RS是单个字符时,RT包含相同的单个字符。但是,whenRS是正则表达式,RT包含与正则表达式匹配的实际输入文本。
这个变量RT在某些情况下非常有用。
同样,我们可以设置一个正则表达式作为字段分隔符。例如,在这里我们允许它是“;” 或“|”:
$ gawk -F';' '{print NF}' <<< "hello;how|are you"
2 # there are 2 fields, since ";" appears once
$ gawk -F'[;|]' '{print NF}' <<< "hello;how|are you"
3 # there are 3 fields, since ";" appears once and "|" also once
Run Code Online (Sandbox Code Playgroud)
但是,如果我们想再次打包数据,我们没有办法知道两个字段之间出现了哪个分隔符。因此,如果在前面的示例中我想遍历字段并使用 再次将它们打印在一起FS,它会在每种情况下打印整个表达式:
$ gawk -F'[;|]' '{for (i=1;i<=NF;i++) printf ("%s%s", $i, FS)}' …Run Code Online (Sandbox Code Playgroud)