我是 Bash 新手。我有一个目录tags
,里面有很多.txt
类似名称的文件,如下所示
[coral/home/tags]$ ls:
file1.txt file2.txt file3.txt file4.txt
每个.txt
文件都包含如下信息:
line1 b1
line2 b2
line3 b3
line4 b4
我想查看每个文本文件并找到包含单词的文件b3
。如果文件包含该单词,我希望脚本写入整行和包含该单词的文本文件。
这是我的失败的尝试:
#!/usr/bin/env
PATH=path/to/files
for x in $PATH:
do
echo $x
done
答案1
如果你不介意使用 grep:
在tags
目录中:
grep -Hrn 'b3' .
-H
打印文件名(当搜索多个文件时暗示)-r
递归搜索-n
打印行号.
通配符
可能有趣的选项:
grep -C 3 'b3' path/to/files
您可以调整-C
匹配之前和之后返回的 ontext 行数(这里是3
)。