我创建了一个脚本来搜索文本文件中的字符串,并输出带有该字符串的所有行:
#!/bin/sh
STRING=$1
FILE=dsat.txt
if grep -q $STRING $FILE;
then
echo -e "$(grep $STRING $FILE)\n"
else
echo "Not found"
exit 0
fi
我想对此进行扩展,在文本文件中我有多个细节,例如
Word1 Word2 - Word3 Word4 Word5
Word1 Word6 Word3 Word7 Word8
在搜索中,我搜索“ Word1 Word3”
我希望它在搜索用例与此行匹配时仍输出这些行。
使用grep可以吗?
更新:
#!/bin/sh
FILE=text.txt
STRING='$1'
grep "$(sed 's/ */\\|/g' <<<"$1")" $FILE
因此,当我运行脚本时,我会执行script.sh Word1 Word2,但它似乎也不会搜索word2 谢谢
答案 0 :(得分:2)
直到我理解您的问题,您是说匹配多个模式吗?
如果这是您要的内容,
grep 'A B\|A B C' file
将使用A B
或A B C
打印所有行。
|
用于this pattern | or this pattern
。它需要反斜线。
对于不带反斜杠的使用,您可以提供-E
标志。
更新:
假设您将所有单词存储在words
中,
grep "$(sed 's/ */\\|/g' <<<"$words")" file
答案 1 :(得分:0)
grep -f从文件读取几种模式