这是我目前的代码:
grep -o -P '(?<=class\=\"name\">).*?(?=<\/div>)' * > ../name.txt
现在,它正在搜索目录中的每个文件,并输出class="name">
和</div>
之间的名称。
但如果在文件中找不到任何内容,则该文件根本不会显示在输出的name.txt
文件中。
如果找不到字符串,是否有办法让它仍然显示该文件已被搜索?
例如,现在它的输出如下:
file1.html:Bob
file3.html:Person
file4.html:Other
我希望它输出如下:
file1.html:Bob
file2.html:UNKNOWN
file3.html:Person
file4.html:Other
这可能吗或我遗失了什么?
答案 0 :(得分:0)
您必须编写一个循环来报告不匹配的文件。
for file in *; do
grep -h -o -P '(?<=class\=\"name\">).*?(?=<\/div>)' "$file" || echo "$file:UNKNOWN"
done