在Bash中引用正则表达式

时间:2014-05-12 08:40:23

标签: regex bash

我试图编写一个条件,以适合所有以空格/制表符开头的行和单词路径

/sPath.* - simple regexp?

我发现在Bash 4. *它应该看起来像:

if [[ $LINE =~ "[[:space:]]Path" ]]

但出于某种原因这种情况不起作用。

if [[ $LINE =~ [[:space:]] ]]

正常工作,并显示带有空格/标签的所有行。

2 个答案:

答案 0 :(得分:2)

version 3.2 onwards开始,不得在Bash中引用模式(即正则表达式):

  
      
  1. Bash的新功能
  2.         

    ...

         

    F。现在引用[[command' s =〜运算符]的字符串参数   强制字符串匹配,与其他模式匹配运算符一样。

换句话说,引用被认为是正则表达式本身的一部分(文字")。

此外,最好引用变量$LINE,以防止错误,如果它是空的:

if [[ "$LINE" =~ [[:space:]] ]]

答案 1 :(得分:0)

最好使用:

[[ "$LINE" =~ [[:blank:]] ]]
  1. 引用变量LINE
  2. 与字符类[[:blank:]]匹配,相当于空格OR标签