如何 grep 查找环境变量中带有正斜杠的内容?

如何 grep 查找环境变量中带有正斜杠的内容?

我想要 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 表示整行。

相关内容