[英]how to find a file name that contains a string "abcd " in the file content from multiple files in the directory using awk
“bookrecords”目录有多个文件
bookrecords
1.txt
2.txt
3.txt .....
文件 2.txt 有内容
2.txt
author: abcd
title: efg
year: 1980
如何使用 author: 作为关键字获取文件名 2.txt
使用 awk 命令
我尝试使用 grep 命令,但我想使用 awk 命令
SearchRecord()
{
name = abcd
total=`cat $bookrecords | grep -cwi $name`
record=`cat $bookrecords | grep -wi $name`
menu
}
与awk
$ awk -v search_string="$name" '$0~search_string{print FILENAME; exit}' bookrecords/*
但是,如果您不进行结构搜索,我认为grep
会更好
$ grep -lF "$name" bookrecords/*
如果您在bookrecords
下有较深的目录层次结构,则可以执行
grep -Elsrx '[[:space:]]*author:[[:space:]]*abcd[[:space:]]*' bookrecords
如果您只想查看bookrecords
中的 *.txt 文件,请执行
grep -Elx '[[:space:]]*author:[[:space:]]*abcd[[:space:]]*' bookrecords/*.txt
-l
只产生 output 中的文件名,而-x
则注意正则表达式匹配整行。 因此,不会选择包含myauthor:abcde的行。 根据您的喜好调整正则表达式,并在用真实作者姓名替换abcd时要小心(它不应包含未转义的正则表达式字符,例如句点)。
如果您想以至少一个空格开始该行,并且在冒号后至少有一个空格:
grep -Elsrx '[[:space:]]+author:[[:space:]]+abcd[[:space:]]*' bookrecords
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.