给定以下命令,

echo "1: " | awk '/1/ -F ":" {print $1}'

为什么AWK输出:

1:

?


当前回答

或者你可以用:

echo "1: " | awk  '/1/{print $1-":"}' 

这是一个非常有趣的方程。

其他回答

-F是命令行参数,不是AWK语法。试一试:

echo '1: ' | awk -F  ':' '/1/ {print $1}'

-F是awk本身的参数:

$echo "1: " | awk -F":" '/1/ {print $1}'
1

如果你想通过编程来实现,你可以使用FS变量:

echo "1: " | awk 'BEGIN { FS=":" } /1/ { print $1 }'

注意,如果在主循环中而不是在BEGIN循环中更改它,它将对读入的下一行产生影响,因为当前行已经被分割了。

没有必要写这么多。只需在AWK命令中使用-F选项输入所需的字段分隔符,并根据您提到的字段分隔符打印要分隔的列号。

echo "1: " | awk -F: '{print $1}'
1

echo "1#2" | awk -F# '{print $1}'
1

或者你可以用:

echo "1: " | awk  '/1/{print $1-":"}' 

这是一个非常有趣的方程。