按正确的顺序查找单词

时间:2012-04-30 19:32:00

标签: bash

我在bash上有一些工作要做。它是这样的:

作为第一个参数,您键入单词以按照写入顺序在文件中找到它,在第二个参数中键入目录。它必须递归搜索并返回它出现的文件名。

例如:bash mybash "alice cat" . 它应该返回包含例如的文件:“alice有一只猫”,“爱丽丝猫”,但不是“猫有爱丽丝”

我做了像这样的东西

#!/bin/bash
pattern=".*"

for arg in $1; do
    pattern+="${arg}.*"
done

grep -r ${pattern} $2

但它只能逐行搜索,却找不到带有以下内容的文件:

“alice something else”

“新行有猫”

但它应该返回它。

一些帮助将不胜感激。

电贺。

2 个答案:

答案 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