给定以下命令,

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

为什么AWK输出:

1:

?


当前回答

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

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

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

其他回答

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

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

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

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

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

你有多种方法来设置:作为分隔符:

awk -F: '{print $1}'

awk -v FS=: '{print $1}'

awk '{print $1}' FS=:

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

它们都是等价的,并且在输入“1:2:3”的情况下将返回1:

$ awk -F: '{print $1}' <<< "1:2:3"
1
$ awk -v FS=: '{print $1}' <<< "1:2:3"
1
$ awk '{print $1}' FS=: <<< "1:2:3"
1
$ awk 'BEGIN{FS=":"} {print $1}' <<< "1:2:3"
1

-F是awk本身的参数:

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

也可以使用正则表达式作为字段分隔符。下面将使用正则表达式将数字“10”设置为分隔符来打印“bar”。

echo "foo 10 bar" | awk -F'[0-9][0-9]' '{print $2}'