我想要 grep 一个文件,并且想要获取具有特定环境变量的所有行(确切地说,是$PWD
)。
当然,仅使用
cat file | grep '/'$PWD'/'
不起作用,因为$PWD
包含斜杠。
我试图弄清楚如何正确地做到这一点,但我只想出了奇怪且过于复杂的解决方案。有什么简单的方法可以做到这一点?
答案1
只需使用双引号而不是单引号,并且不必使用cat
(请参阅乌鲁木齐大学):
grep -F -- "$PWD" file
请记住,如果没有-F
,$PWD
将被视为正则表达式,而不是在 中查找的字符串file
。
答案2
由于正斜杠不是特殊字符,因此您可以自由使用它:
grep "$PWD/" file
添加尾部 / 不会造成任何问题。然而,正斜杠是 awk 和 sed 中的特殊字符。模式由/ / 括起来。在这种情况下,您可以使用
awk -v pattern="$PWD/" '$0 ~ pattern' file
避免 awk /pattern/ {action} 语法。这里“~”是匹配运算符,$0 表示整行。