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++侧吗?从示例中可以看出,它至少忽略了显示返回类型