我希望匹配以字符x开头的所有字符串。
为什么
echo " x x1 x2 y1 z1 x345" |awk -v RS="x[^ ]*" '$0=RT'
再输出一行空白行
echo " x x1 x2 y1 z1 x345" |awk -v RS="x[0-9 ]*" '$0=RT'
答案 0 :(得分:1)
[^ ]
捕获新行,另一个正则表达式不捕获。如果您想获得相同的结果,请使用echo -n
来抑制尾随新行。
答案 1 :(得分:1)
换行符不是空白字符,因此最后一条记录为x345\n
。你真正想要的表达是:
$ echo " x x1 x2 y1 z1 x345" |awk -v RS="x[^[:space:]]*" '$0=RT'
x
x1
x2
x345
但当然你永远不应该使用$0=RT
你应该简单地使用{print RT}
(或者如果你觉得需要重新分配$ 0并强制字段拆分发生两次,那么{$0=RT}1'
)