Answers:
您已经弄乱了引号和语法。要设置输入字段分隔符,最简单的方法是使用-F
命令行上的选项:
awk -F '[0-9]' '{ print $1 }'
要么
awk -F '[[:digit:]]' '{ print $1 }'
这将使用任何数字作为输入字段分隔符,然后从每行输出第一个字段。
在[0-9]
和[[:digit:]]
表达式不相当,同样根据您所在地区。请参见“ [0-9],[[:digit:]]和\ d之间的区别 ”。
也可以FS
在awk
程序本身中设置。由于这是BEGIN
一次初始化,因此通常在一个块中完成:
awk 'BEGIN { FS = "[0-9]" } { print $1 }'
请注意,在外壳程序中不能在单引号引起来的字符串中使用单引号,并且awk
字符串始终使用双引号。
+1为Kusalananda的答案。另外,可以在BEGIN块中设置FS变量:
awk 'BEGIN {FS="[0-9]"} {print $1}'
在读取下一行之前,在动作块中更改FS不会生效
$ printf "%s\n" "abc123 def456" "ghi789 jkl0" | awk '{FS="[0-9]"; print $1}'
abc123
ghi
问题中的其他错误:
==
是比较运算符,=
用于变量赋值