【问题标题】:bash scripting cat and echobash脚本猫和回声
【发布时间】:2019-03-22 10:27:30
【问题描述】:

我是 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 ?

非常感谢。

【问题讨论】:

  • 要同时使用它们,只是避免将一个管道连接到另一个,这不会有任何用处。
  • 看起来你应该使用函数而不是尝试执行字符串

标签: bash scripting echo cat


【解决方案1】:

您不需要对每个模式都进行 grep,只需将模式与管道 (|) 连接并 grep 一次。例如,如果要从file 中过滤掉包含foobarbaz 的行,请使用以下命令:

grep -v 'foo|bar|baz' file

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

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

grep -v "$my_pattern" file

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2011-01-20
    • 2013-02-02
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多