将变量传递给shell中的grep

时间:2013-09-05 16:54:17

标签: linux bash variables grep

我编写了以下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

2 个答案:

答案 0 :(得分:9)

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

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

也许你的意思是这个,但只要尝试一下。

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

答案 1 :(得分:7)

  1. 您需要正确的shell引用(对shell的变量扩展使用双引号)
  2. 您不需要wc -l,您可以直接使用grep -c来计算匹配数
  3. 您可以使用:

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