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