匹配条件中的字符串

时间:2019-05-01 11:56:06

标签: linux bash while-loop

我有一个文件a<- data.frame(c(1,2,3), c(4,5,6)) b<- data.frame(c(2,4,6), c(8,10,12)) ggplot(data=NULL) + geom_point(aes(x=a[,1],y=a[,2]), color="blue") + geom_point(aes(x=b[,1], y=b[,2]), color="red") ,内容如下:

some_file.txt

现在,我正尝试将APC000101052019 APC000201052019 APC000301052019 APC000401052019 APC000501052019 与以下脚本进行匹配:

APC0001

但是我没有得到预期的输出,下面是我得到的输出:

#!/bin/bash

cat /home/xxxx/xxxx/some_file.txt|while read -r line
do
    if [[ "APC0001" =~ "$line" ]]
    then
        echo $line
        exit 1
    fi
done

我的代码在做什么错?

1 个答案:

答案 0 :(得分:3)

要匹配的模式应位于=~表达式的右侧:

if [[ "$line" =~ ^APC0001 ]]
    then
        echo $line
        exit 1
    fi

看看bash manual/conditional constructs中的[[...]]部分。

作为旁注,您在那里不需要cat。只要做:

while read -r line
do
    # ...
done < /home/xxxx/xxxx/some_file.txt