【问题标题】:Passing variable to grep in shell [duplicate]将变量传递给shell中的grep [重复]
【发布时间】:2013-09-09 14:49:04
【问题描述】:

我编写了以下 shell 来计算以“A valA B valB”模式开头的行数。但是,我认为我没有正确传递变量。有什么帮助解决这个问题吗?

for i in {0..16};
do
    for j in {0..16}; 
    do
        echo A $i B $j 
        grep '^ A : "$i" B : "$j"' file | wc -l
    done
done

【问题讨论】:

  • 是要匹配文本的双引号部分,还是试图触发变量扩展?

标签: linux bash variables grep


【解决方案1】:

使用正确的bash quoting。变量不在'' 内展开。请参阅链接以供参考。

grep "^ A : $i B : $j" file | wc -l 

也许你的意思是这个,但请尝试任何一个。

grep "^ A : \"$i\" B : \"$j\"" file | wc -l 

【讨论】:

    【解决方案2】:
    1. 您需要正确的 shell 引用(使用双引号来扩展 shell 的变量)
    2. 你不需要wc -l,你可以直接使用grep -c来统计匹配数

    你可以使用:

    grep -c "^ A : $i B : $j" file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-14
      • 2021-11-30
      • 2013-03-28
      • 2021-10-26
      • 2012-04-01
      • 1970-01-01
      • 2013-11-02
      • 2013-05-04
      相关资源
      最近更新 更多