将两个 awk 命令合二为一
Combine two awk commands into one
如何将最后两个 awk 命令合并为一个。
cut -d':' -f1,2,3,4,5 /etc/passwd |awk -F: '{print ,}' |awk 'NF>=4'
我看到了这个问题,但我不知道如何将它应用到这个问题上。
Combine two AWK commands
这个有用吗:
cut -d':' -f1,2,3,4,5 /etc/passwd|awk -F: '
{split(, a, " "); split(, b, " ");}
length(a) + length(b) >= 4 { print , }'
或者根据@shellter 只是:
awk -F: '{split(, a, " "); split(, b, " ");}
length(a) + length(b) >= 4 { print , }' /etc/passwd
由于拆分了 returns 个拆分项,我们可以进一步简化:
awk -F: 'split(" ", a, " ") >=4 {print , }' /etc/passwd
这是您的命令的作用。
- 取
/etc/passwd
中的前五个字段:
- 然后使用字段
5
和字段1
分隔:
- 测试是否大于或等于由 space 分隔的
4
个字段。
我会这样做:
awk -F: '{[=10=]=" "} split([=10=],a," ")>3' /etc/passwd
-F:
将字段分隔符设置为 :
[=19=]=" "
使用字段 5
和 1
重新创建行
split([=22=],a," ")
使用 space 拆分行,拆分的输出是字段数。
split([=23=],a," ")>3
测试是否有超过 3
个字段。 (我们也可以使用 >=4
如何将最后两个 awk 命令合并为一个。
cut -d':' -f1,2,3,4,5 /etc/passwd |awk -F: '{print ,}' |awk 'NF>=4'
我看到了这个问题,但我不知道如何将它应用到这个问题上。
Combine two AWK commands
这个有用吗:
cut -d':' -f1,2,3,4,5 /etc/passwd|awk -F: '
{split(, a, " "); split(, b, " ");}
length(a) + length(b) >= 4 { print , }'
或者根据@shellter 只是:
awk -F: '{split(, a, " "); split(, b, " ");}
length(a) + length(b) >= 4 { print , }' /etc/passwd
由于拆分了 returns 个拆分项,我们可以进一步简化:
awk -F: 'split(" ", a, " ") >=4 {print , }' /etc/passwd
这是您的命令的作用。
- 取
/etc/passwd
中的前五个字段:
- 然后使用字段
5
和字段1
分隔:
- 测试是否大于或等于由 space 分隔的
4
个字段。
我会这样做:
awk -F: '{[=10=]=" "} split([=10=],a," ")>3' /etc/passwd
-F:
将字段分隔符设置为 :
[=19=]=" "
使用字段 5
和 1
重新创建行
split([=22=],a," ")
使用 space 拆分行,拆分的输出是字段数。
split([=23=],a," ")>3
测试是否有超过 3
个字段。 (我们也可以使用 >=4