有一段时间读取循环:
while read line; do
grep "^$line" file1
done < target
我应该使用"^$line"
来获得正确的答案。我想知道它们之间有什么区别
"$line"
和"^$line"
?
答案 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