Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Unix 解析每个字段并使用';awk&x27/';目瞪口呆';_Unix_Awk - Fatal编程技术网

Unix 解析每个字段并使用';awk&x27/';目瞪口呆';

Unix 解析每个字段并使用';awk&x27/';目瞪口呆';,unix,awk,Unix,Awk,以下是一个问题: grep bar 'foo.txt' | awk '{print $3}' “AWK”查询发出的字段名是Mulc++ C++符号名。我想将每个都传递给,并最终输出“dem”的输出,即所需的符号 假设字段分隔符是“”(空格)。如何 grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }' 怎么样 grep bar 'foo.txt' | awk '{ print $3 }' | xargs

以下是一个问题:

grep bar 'foo.txt' | awk '{print $3}'
<>“AWK”查询发出的字段名是Mulc++ C++符号名。我想将每个都传递给,并最终输出“dem”的输出,即所需的符号

假设字段分隔符是“”(空格)。

如何

grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
怎么样

grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'

awk
是一种模式匹配语言。
grep
完全没有必要

awk '/bar/{print $3}' foot.txt
做你的例子所做的

Edit在阅读了前面答案上的注释后进行了一点修改(我对
dem
一无所知):

您可以通过以下方式使用awk中的
系统
调用:

awk '/bar/{cline="dem " $3; system(cline)}' foot.txt
但这将为处理的每个符号生成一个
dem
实例。效率很低

因此,让我们变得更聪明:

awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt
顺便说一句——未经测试,因为我没有
dem
或您的输入



另一个想法是:如果你打算使用其他海报提供的
xargs
公式,
cut
可能比
awk
更有效。然而,此时您需要再次使用
grep

awk
是一种模式匹配语言。
grep
完全没有必要

awk '/bar/{print $3}' foot.txt
做你的例子所做的

Edit在阅读了前面答案上的注释后进行了一点修改(我对
dem
一无所知):

您可以通过以下方式使用awk中的
系统
调用:

awk '/bar/{cline="dem " $3; system(cline)}' foot.txt
但这将为处理的每个符号生成一个
dem
实例。效率很低

因此,让我们变得更聪明:

awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt
顺便说一句——未经测试,因为我没有
dem
或您的输入



另一个想法是:如果你打算使用其他海报提供的
xargs
公式,
cut
可能比
awk
更有效。但是,此时,您需要再次使用
grep

这将打印所需的符号,如果是方法,则包括参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'

这将打印所需符号,在方法的情况下,无参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'
干杯,
V.

这将打印所需的符号,对于方法,包括参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'

这将打印所需符号,在方法的情况下,无参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'
干杯,
V.

按照我阅读dem手册页的方式,符号名称应该在命令行上,而不是在stdinoops上,我误解了这一点。我在对XARGS的调用中编辑了它,应该修复它。好,C++的边可以有空格:)是的,我的C++文件不能用他(显然)的太阳字符样式:但你可能幸运,DEM没有把空间放进C++侧吗?从示例中可以看出,它忽略了显示返回类型,至少我读取dem手册页的方式是,符号名称应该在命令行上,而不是在stdinoops上,我误解了这一点。我在对XARGS的调用中编辑了它,应该修复它。好,C++的边可以有空格:)是的,我的C++文件不能用他(显然)的太阳字符样式:但你可能幸运,DEM没有把空间放进C++侧吗?从示例中可以看出,它至少忽略了显示返回类型