我需要获取一个文件并计算$7的出现次数--我已经用awk做到了这一点(因为我需要运行更多的awk)
我想要做的是将它合并到一个脚本中--到目前为止我已经
#! /usr/bin/awk -f
# get the filename, count the number of occurs
# <no occurs> <filename>
{ print $7 | "grep /datasheets/ | sort | uniq -c"}如何获取输出并通过更多awk命令在同一文件中运行它
最终,我需要能够运行
./process.awk <filename> 因此,它可以替代以前的设置,因为它需要花费太多的时间来更改-
发布于 2012-04-30 19:54:05
如果您想将awk脚本的输出转发到另一个awk脚本,只需通过管道将其发送到awk。
awk 'foobar...' file|awk 'new awkcmd'您当前的awk|grep|sort|uniq可以使用awk本身来完成。保存您的3个进程。你想重复计数,不是吗?
awk '$7~=/datasheets/{a[$7]++;} END{for(x in a)print x": "a[x]' file应该行得通。
发布于 2012-07-09 06:02:07
如果您使用Gawk,您可以使用双向通信将数据推送到外部命令,然后将其读回:
#!/usr/bin/gawk -f
BEGIN {
COMMAND = "sort | uniq -c"
SEEN = 0
PROCINFO[ COMMAND, "pty" ] = 1
}
/datasheets/ {
print $7 |& COMMAND
SEEN = 1
}
END {
# Don't read sort output if no input was provided
if ( SEEN == 1 ) {
# Tell sort no more input data is available
close( COMMAND, "to" )
# Read the sorted data
while( ( COMMAND |& getline SORTED ) > 0 ) {
# Do whatever you want on the sorted data
print SORTED
}
close( COMMAND, "from" )
}
}请参阅https://www.gnu.org/software/gawk/manual/gawk.html#Two_002dway-I_002fO
https://stackoverflow.com/questions/10382631
复制相似问题