给定以下命令,
echo "1: " | awk '/1/ -F ":" {print $1}'
为什么AWK输出:
1:
?
给定以下命令,
echo "1: " | awk '/1/ -F ":" {print $1}'
为什么AWK输出:
1:
?
当前回答
如果你想通过编程来实现,你可以使用FS变量:
echo "1: " | awk 'BEGIN { FS=":" } /1/ { print $1 }'
注意,如果在主循环中而不是在BEGIN循环中更改它,它将对读入的下一行产生影响,因为当前行已经被分割了。
其他回答
echo "1: " | "456:abc:515:xyz "
awk -F: NF=/1/
1 | 456
更新:意识到我之前的回答有多啰嗦
如果你想通过编程来实现,你可以使用FS变量:
echo "1: " | awk 'BEGIN { FS=":" } /1/ { print $1 }'
注意,如果在主循环中而不是在BEGIN循环中更改它,它将对读入的下一行产生影响,因为当前行已经被分割了。
或者你可以用:
echo "1: " | awk '/1/{print $1-":"}'
这是一个非常有趣的方程。
也可以使用正则表达式作为字段分隔符。下面将使用正则表达式将数字“10”设置为分隔符来打印“bar”。
echo "foo 10 bar" | awk -F'[0-9][0-9]' '{print $2}'
-F是awk本身的参数:
$echo "1: " | awk -F":" '/1/ {print $1}'
1