读取行并比较字符串

时间:2015-02-17 14:49:28

标签: bash

尝试创建一个逐行读入文件(参数1)的bash脚本。如果该行包含与某个搜索字符串匹配的关键字,则该脚本将仅回显该行。到目前为止我所拥有的是:

#!/bin/bash
searchString1="TASK"
searchString2="WD's"

while read line
do
    name=$line
    if [[ $searchString1 == *"$name"* ]] ; 
    then
        echo $name;
    elif [[ $searchString2 == *"$name"* ]] ; 
    then
        echo $name;
    fi 
done < $1

脚本运行如下:

chmod +x parser_script.sh
./parser_script.sh filename.txt    

此bash脚本未检测到搜索字符串。 知道如何解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:2)

测试是倒退的。

if [[ $name == *"$searchString1"* ]]; then
    echo $name
elif [[ $name == *"$searchString2"* ]]; then
    echo $name
fi 

其他写法:

if [[ $name == *"$searchString1"* ]] ||
   [[ $name == *"$searchString2"* ]]
then
    echo $name;
fi 

case $name in
    *"$searchString1"*|*"$searchString2"*)
        echo $name
        ;;
esac

正如评论中所述,您可以通过一次grepawk来电来完成此操作。