使用shell脚本进行正则表达式匹配

时间:2016-08-03 14:51:23

标签: bash shell

我在下面创建了一个shell脚本,用于检查文件out.txt是否包含任何带有文本" Billing_20160210"的行。我在正则表达式部分中得到错误,该错误表明" [[:not found"。不确定我是否遗漏了什么。任何帮助将不胜感激。

#!/bin/bash
bq ls test:Dataset_test > out.txt
cat out.txt | while read LINE
do 
  if [ LINE = *"Billing_20160210"* ]; 
  then 
    echo "Processing $LINE"
  fi
done

编辑无效:

#!/bin/bash
bq ls geotab-bigdata-test:JS_test > out.txt
cat out.txt | while read LINE
do 
 if [[ $LINE == *"DailyBillingTest_20160210"* ]];
 then 
  echo "Processing $LINE"
 fi
done

1 个答案:

答案 0 :(得分:1)

不要使用shell循环逐行过滤文件。在此处使用grep作为过滤器:

grep 'Billing_20160210' out.txt | while read -r line ; do
    echo "processing ${line}"
done

甚至没有临时文件:

bq ls test:Dataset_test | grep 'Billing_20160210' | while read -r line ; do
    echo "processing ${line}"
done