Linux awk-如何“重新awk”输出?

Linux awk-如何“重新awk”输出?,linux,unix,awk,Linux,Unix,Awk,我需要拿一个文件,计算$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命令

我需要拿一个文件,计算$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> 

因此,它可以替代以前的设置,而以前的设置需要花费太多的时间/精力来更改-

如果您想将一个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

应该可以工作。

如果要将一个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

应该可以工作。

如果使用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" )
  }
}

请参见

如果使用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" )
  }
}

请参见

我不知道可以在AWK脚本中以字符串形式将一些输出传递给外部命令。美好的我不知道可以在AWK脚本中以字符串形式将一些输出传递给外部命令。美好的