bash - 如何打印必填字段
问题描述
输入线:
a b=34 c d="12 34 54" e f=387
a b=12 c z d="89 08 23" e f=321 g=12
我想打印两个字段 b 和 d。
所需的输出如下:
b=34 d="12 34 54"
b=12 d="89 08 23"
我试过了
awk '{print $2, $4}' filename
但这不会产生正确的输出。
解决方案
如果gawk
4.0 或更高版本可用,如何使用FPAT
?
请试试:
gawk -v FPAT='[^ ]+|\\w+="[^"]+"' '
{for (i=1; i<=NF; i++) if (match($i, "^(b|d)")) printf("%s ", $i); print ""}
' input.txt
输出:
b=34 d="12 34 54"
b=12 d="89 08 23"
FPAT
,一个awk
变量,是一个正则表达式来匹配每个字段的内容,而不是用字段分隔符来分割行。