“$ line”和“^ $ line”之间的区别是什么?

时间:2014-02-24 21:16:14

标签: linux bash unix

有一段时间读取循环:

while read line; do
    grep "^$line" file1
done < target

我应该使用"^$line"来获得正确的答案。我想知道它们之间有什么区别 "$line""^$line"

2 个答案:

答案 0 :(得分:6)

这里while循环不相关,grep命令使^显着。 ^字符是正则表达式中的标识符。它匹配行的开头,因此grep "$line" file匹配文件中$line为子字符串的所有行,但grep "^$line"仅匹配以$line开头的行。

答案 1 :(得分:1)

@sudo_O对您的问题有正确的答案。但是,您可以完全省略循环:

grep -f target file1

只需一次调用grep就可以提高效率。如果你需要线锚:

grep -f <(sed 's/^/^/' target) file1