这个Awk表达式是什么意思

这个Awk表达式是什么意思,awk,Awk,我正在使用包含此命令的bash脚本 awk -F ‘‘ ‘/abc/{print $3}’|xargs 这个命令是什么意思??假设向awk提供了输入。快速回答是,它将根据您正在运行的awk版本以及awk脚本生成的输出字段的数量执行不同的操作 我想你是想写: awk -F '' '/abc/{print $3}'|xargs 非语法无效(由于“智能引号”): 根据POSIX,-F'是未定义的行为,因此它将执行的操作取决于您正在运行的awk版本。在某些AWK中,它会将当前行拆分为每个字段1个字符

我正在使用包含此命令的bash脚本

awk -F ‘‘ ‘/abc/{print $3}’|xargs

这个命令是什么意思??假设向awk提供了输入。

快速回答是,它将根据您正在运行的awk版本以及awk脚本生成的输出字段的数量执行不同的操作

我想你是想写:

awk -F '' '/abc/{print $3}'|xargs
非语法无效(由于“智能引号”):

根据POSIX,
-F'
是未定义的行为,因此它将执行的操作取决于您正在运行的awk版本。在某些AWK中,它会将当前行拆分为每个字段1个字符。在其他情况下,它将被忽略,并且该行将在每个空格序列处拆分为字段。在其他方面,它仍然可以做其他任何事情

/abc/
在当前行中查找与regexp
abc
匹配的字符串,如果找到,则调用后续操作,在本例中为
{print$3}

但是,它被拆分为多个字段,
print$3
将打印第三个这样的字段

xargs
使用时只打印多行输入的块,它在一行上获取所有内容,因此如果没有多个字段输出,则可以获得所有字段的一行输出,如果有多行字段输出,则可以获得多行输出

我怀疑这段代码的目的是为了做这段代码在任何awk中实际会做的事情:

awk '/abc/{printf "%s%s", sep, substr($0,3,1); sep=OFS} END{print ""}'
e、 g:


-F
是一个字段分隔符,后面的值是什么,看起来它使用的是unicode/智能引号
/abc/{print$3}
表示如果行中有
abc
则打印字段/列
3
中的任何内容,并将
|
输出到
xargs
@TMSuhas:请完全按照提供的方式复制并粘贴命令。按照您编写它的方式,它在语法上是无效的(错误的引号,缺少空格)。
awk '/abc/{printf "%s%s", sep, substr($0,3,1); sep=OFS} END{print ""}'
$ printf 'foo\nxabc\nyzabc\nbar\n' |
    awk '/abc/{printf "%s%s", sep, substr($0,3,1); sep=OFS} END{print ""}'
b a