[英]How can I collapse this bash command line into an awk statement?
我创建了一个awk脚本并像这样使用它:
# grep -E "[PM][IP][DO][:S]" file.txt | awk-script
如何修改awk脚本以包含grep命令(正在搜索“ PID:”或“ MPOS”的工作)?
awk脚本是:
#!/usr/bin/awk -f
/Sleeve/ {
printf("%8d, %7d, %7.2f, %7.2f, %7.2f\n", $5, $6, $7, $30, $31)
}
/Ambient/ {
printf("%8d, %7d,,,, %7.2f, %7.2f\n", $5, $6, $7, $8)
}
/MPOS:/ {
printf("%8d, %7d,,,,,, %5d, %5d\n", $4, $5, $2, $3)
}
如果你只是想搜索PID:
或MPOS
,可以这么说,如果你没有在该行找到他们,你想跳过以下规则:
#!/usr/bin/awk -f
!/PID:|MPOS/ {
next
}
/Sleeve/ {
printf("%8d, %7d, %7.2f, %7.2f, %7.2f\n", $5, $6, $7, $30, $31)
}
/Ambient/ {
printf("%8d, %7d,,,, %7.2f, %7.2f\n", $5, $6, $7, $8)
}
/MPOS:/ {
printf("%8d, %7d,,,,,, %5d, %5d\n", $4, $5, $2, $3)
}
我在busybox
尝试了litb的答案(在Bash的Ubuntu上),它对我有用 。 为了进行测试,我使用了以下shebang来匹配我有指向busybox
符号链接的位置:
#!/home/username/busybox/awk -f
并使用以下命令运行测试:
./awk-script file.txt
我还在busybox sh
下运行了该测试(使用PATH=/home/username/busybox:$PATH
虽然对此不是必需的),但它在那里工作。
当您说“我仍然有悲伤”时。 这意味着什么? 您收到错误消息或错误结果吗?
顺便说一句,除非您要搜索字符的所有排列,否则可以这样进行grep:
grep -E "(PID:|MPOS)" file.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.