我正在使用 grep 命令从文件中获取所需的信息。我正在使用如下两个 grep 语句
XXXX='grep XXXX FILE A|sort|uniq|wc -l'
grep YYYY FILE A|uniq| > FILE B
现在文件被遍历了两次。但我只想知道,如果我能够在单个文件遍历中完成这两个步骤,即我想知道我是否可以使用类似于 egrep 的东西,在那里我可以对两个字符串和一个字符串进行 grep 我将使用它输入一个变量并将另一个字符串输出到一个文件中。
最佳答案
您可以使用以下代码。在这里,我们只在所有文件中搜索包含 XXXX 或 YYYY 的行一次,并将结果行存储到数组中。然后我们使用这个数组的元素来选择包含 XXXX 的行和包含 YYYY 的行。
filtered=`grep -E '(XXXX|YYYY)' FILE A`
XXXX=`for line in ${filtered[@]}; do echo $line; done | grep XXXX | sort | uniq | wc -l`
for line in ${filtered[@]}; do echo $line; done | grep YYYY | uniq > FILE B
所以文件不会被遍历两次!
关于shell - 搜索多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421900/