在Bash中匹配组

时间:2016-09-29 17:58:08

标签: regex bash

我正在学习bash脚本,我试图理解正则表达式如何与bash一起工作。在我的简单程序中,我有一个各种不同行的文件,但想要匹配一个简单的int对,用逗号和空格分隔的两个数字的格式如下:123,123。我也想匹配行这样我就可以轻松地从行中提取第一个和最后一个数字。但是当我将一个示例文件传递给我的程序时,它与我期望的任何行都不匹配。

代码:

#!/bin/bash

re="([0-9]+)(, )([0-9]+)"

echo $1
file1=$1

while IFS= read -r line; do
    echo "The line is: $line"
    if [[ $line =~ $re ]]; then
           echo ${BASH_REMATCH[0]};
           echo ${BASH_REMATCH[1]};
           echo ${BASH_REMATCH[2]};
    fi
done < $1

sample.txt的:

56, 345
Hello world 1234
Hello world, 1234
Hello world1234
BAd
Hello
Hello World
Hello dog

预期产出:

This line is: 56, 345
56
, 
This line is: Hello world 1234
This line is: Hello world, 1234
This line is: Hello world1234
This line is: BAd
This line is: Hello
This line is: Hello World
This line is: Hello dog

实际输出:

./asymmetrickey_encr keys.txt
./asymmetrickey_encr: line 4: syntax error near unexpected token `('
./asymmetrickey_encr: line 4: `re=([0-9]+)(, )([0-9]+)'

0 个答案:

没有答案