我在bash上有一些工作要做。它是这样的:
作为第一个参数,您键入单词以按照写入顺序在文件中找到它,在第二个参数中键入目录。它必须递归搜索并返回它出现的文件名。
例如:bash mybash "alice cat" .
它应该返回包含例如的文件:“alice有一只猫”,“爱丽丝猫”,但不是“猫有爱丽丝”
我做了像这样的东西
#!/bin/bash
pattern=".*"
for arg in $1; do
pattern+="${arg}.*"
done
grep -r ${pattern} $2
但它只能逐行搜索,却找不到带有以下内容的文件:
“alice something else”
“新行有猫”
但它应该返回它。
一些帮助将不胜感激。
电贺。
答案 0 :(得分:1)
确实
awk '/alice/,/cat/' file
做你想做的事吗?
答案 1 :(得分:0)
如果删除文件中的换行符,则grep将按预期工作。
find $2 -type f | while read file; do
if tr '\n' ' ' < ${file} | grep -q -r ${pattern}; then
echo ${file}
fi
done