awk中的字段分隔符在这里做什么?

时间:2011-12-09 12:11:50

标签: awk

在此上下文中,指定的字段分隔符如何工作?

awk -F\' '{print "conn kill "$2"\nrepair mailbox "$2" repair=1"}'

2 个答案:

答案 0 :(得分:2)

-F\'使用单引号'作为字段分隔符。

同样'通过前面的\进行转义,以便awk不会将'视为操作部分的开头。

或者,您可以将'括在双引号中:

$ echo "foo'bar'baz" | awk -F\' '{print $1}'
foo
$ echo "foo'bar'baz" | awk -F"'" '{print $1}'
foo

答案 1 :(得分:1)

AWK逐行处理文件。每行都分为多个字段,然后您可以使用美元变量$1进行访问... $9$0是整行,IIRC)。默认情况下,通过在空格上使用分隔将行拆分为字段,但您可以使用-F命令行选项或FS变量指定要拆​​分的字符。

因此,在您的情况下,字段分隔符设置为单引号(')。因此,foo'bar'baz之类的输入行会设置$1 == "foo"$2 == "bar"$3 == "baz"