首页 > 解决方案 > bash脚本猫和回声

问题描述

我是 bash 脚本的新手,我对此感到困惑:

    tab=( "^[A-Z]\{4,\}[0-9]\{4,\}" )

    for (( i=0; i<=$(( ${#tab[*]} - 1 )); i++ ))    
    do      
       tmp+=" grep -v \"${tab[i]}\" |"  
    done    
    # for remove the last |     
    chaine=`echo $tmp| rev | cut -c2- | rev`    
    #result anticipe "cat ${oldConfFile[0]} | grep -v "^[A-Z]\{4,\}[0-9]\{4,\}"
    cat ${oldConfFile[0]} | echo $chaine    

我的麻烦就在那里,如何同时使用 cat 和 echo ?

多谢。

标签: bashscriptingechocat

解决方案


您不需要对每个模式进行 grep,只需将模式与管道 ( |) 和 grep 连接一次。例如,如果要过滤掉包含 和 from 的行foo,请bar使用以下命令:bazfile

grep -v 'foo|bar|baz' file

您可以在调用之外构建模式以获得更好的可读性,如下所示:

my_pattern='foo'
my_pattern+='|bar'
my_pattern+='|baz'

grep -v "$my_pattern" file

推荐阅读