正则表达式匹配字符串开头的可变空格计数

时间:2017-09-06 13:49:36

标签: regex unix

我想要以下内容:

  • 匹配所有空格(count> = 2), BUT 如果在行开头有任何(count> = 0)也匹配它们。

案例是(白色空间被强调):

___x____xxx___x__x__xxxxx_xxxx_xx (1)
__xx____xxx___x__x__xxxxx_xxxx_xx (2)
_xxx____xxx___x__x__xxxxx_xxxx_xx (3)
xxxx____xxx___x__x__xxxxx_xxxx_xx (4)

Ant匹配的空格应如下所示:

___x____xxx___x__x__xxxxx_xxxx_xx (1)
___ ____   ___ __ __              (regex match)

__xx____xxx___x__x__xxxxx_xxxx_xx (2)
__  ____   ___ __ __              (regex match)

_xxx____xxx___x__x__xxxxx_xxxx_xx (3)
_   ____   ___ __ __              (regex match)

xxxx____xxx___x__x__xxxxx_xxxx_xx (4)
    ____   ___ __ __              (regex match)

我将使用此正则表达式使用bash awk命令读取日志文件,因此如果存在unix特定的正则表达式,则可以。

我试过了:

^[ ]{1,}[A-Z0-9]+[ ]{2,} --> not match
^[ ]{1,}[ ]{2,} --> not match
(^[ ]{1,})[ ]{2,} --> not match

1 个答案:

答案 0 :(得分:1)

您可以使用此awk在2个以上的空格中分割输入字段并打印每个字段:

awk -F '[[:blank:]]{2,}' '{
for (i=1; i<=NF; i++) if ($i != "") print $i; print "========================"}' file

我添加了一个用于显示记录中断的分隔线。

<强>输出:

x
xxx
x
x
xxxxx xxxx xx
========================
xx
xxx
x
x
xxxxx xxxx xx
========================
 xxx
xxx
x
x
xxxxx xxxx xx
========================
xxxx
xxx
x
x
xxxxx xxxx xx
========================