10

I have written the following shell to count the number of lines starting with the pattern of " A valA B valB". However, I think that I have not passed variables properly. Any help to fix that?

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
4

2 回答 2

17

使用正确的bash 引用。变量没有在里面展开''。请参阅链接以供参考。

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

也许你的意思是这个,但也可以试试。

grep "^ A : \"$i\" B : \"$j\"" file | wc -l 
于 2013-09-05T17:02:34.513 回答
8
  1. 您需要正确的 shell 引用(使用双引号进行 shell 的变量扩展)
  2. 你不需要wc -l,你可以直接grep -c用于计数匹配

您可以使用:

grep -c "^ A : $i B : $j" file
于 2013-09-05T17:13:38.747 回答