在文件中搜索 2 个字符串并输出包含这两个字符串的行

在文件中搜索 2 个字符串并输出包含这两个字符串的行

所以我想从命令行传递 2 个字符串和文件名,并在文件中搜索这两个字符串。输入示例:script.sh file.txt AB 78
输出示例:001,AB,cse,78

(其中文件中有此行以及其他不匹配的行)

我的尝试:

`#/usr/bin/env bash`  
`grep '$2.*$3\|$3.*$2' $1`

然而这不起作用。有人可以帮忙吗?

答案1

您需要将单引号更改为双引号,以允许$2and$3扩展到您的搜索字符串中:

#/usr/bin/env bash
grep "$2.*$3\|$3.*$2" $1

更好的解释在这里:

https://stackoverflow.com/questions/6697753/difference- Between-single-and-double-quotes-in-bash#6697781

相关内容