我运行这样的命令:
echo "aaa bbb ccc dddd" | awk -F "\s+" '{print $1,$2}'
预期输出为aaa bbb
。
但实际上字段分隔符不起作用!
为什么?有人能帮忙吗?
因为awk将字段分隔符值\s
视为普通s
。你需要再次逃离它,这样它就会告诉awk它不是一个普通的s
,它是一个特殊的元字符,可以匹配所有的空白。
$ echo "aaa bbb ccc dddd" | awk -F "\s+" '{print $1,$2}'
aaa bbb
在这种情况下,绝对不需要调整字段分隔符,因为默认分隔符完全符合您的要求:
echo "aaa bbb ccc dddd" | awk '{print $1,$2}'
将为您提供所需的输出。
s
字符类仅在一些较新版本的awk中可用。如果您发现在另一个上下文中需要它,则可以使用POSIX[[:space:]]
字符类。或者,如果只想匹配一个或多个空格()字符,则可以使用CCD_8(后面跟着加号的单个空格)。