将两个awk命令合并为一个

时间:2015-02-22 02:14:05

标签: awk

如何将最后两个awk命令合并为一个。

cut -d':' -f1,2,3,4,5 /etc/passwd |awk -F: '{print $5,$1}' |awk 'NF>=4'

我看到了这个问题,但我无法弄清楚如何将其应用于这个问题。

Combine two AWK commands

2 个答案:

答案 0 :(得分:2)

这是你的命令所做的。

  1. /etc/passwd分隔的:
  2. 中的前五个字段
  3. 然后使用以5
  4. 分隔的字段1和字段:
  5. 测试是否大于或等于以空格分隔的4字段。
  6. 我将如何做到这一点:

    awk -F: '{$0=$5" "$1} split($0,a," ")>3' /etc/passwd
    

    -F:将字段分隔符设置为:
    $0=$5" "$1使用字段51来重新创建行 split($0,a," ")使用空格分割线,split的输出是字段数 split($0,a," ")>3测试是否有超过3个字段。 (我们也可以使用>=4

答案 1 :(得分:1)

这是否有效:

cut -d':' -f1,2,3,4,5 /etc/passwd|awk -F: '
   {split($5, a, " "); split($1, b, " ");} 
   length(a) + length(b) >= 4 { print $5, $1}'

或者根据@shellter的说法:

awk -F: '{split($5, a, " "); split($1, b, " ");}
         length(a) + length(b) >= 4 { print $5, $1}' /etc/passwd

由于split返回了分割术语的数量,我们可以进一步简化:

awk -F: 'split($5" "$1, a, " ") >=4 {print $5, $1}' /etc/passwd