![如何使用 find 来查找文件并使用 awk 在文件中进行搜索?](https://linux22.com/image/205596/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20find%20%E6%9D%A5%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6%E5%B9%B6%E4%BD%BF%E7%94%A8%20awk%20%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E8%BF%9B%E8%A1%8C%E6%90%9C%E7%B4%A2%EF%BC%9F.png)
在文件夹及其子文件夹中,我想搜索模式。为此,我正在使用:grep+cut+awk+tr
管道。
printf "I am so wide alper world zorro the end\t\t\talper\n" > alper.txt
printf "zorro alper alper alper skfjsdlkfj dslfj dslkj dslfkj sldk\n" > doo.tex
mkdir .git && printf "zorro zoo\n" > .git/test_file.tex
grep -Hrn -e "zorro" --exclude-dir='.git' --color=always -I -F . | \
cut -c 11- | awk '$0="\033[33;35m"$0' | tr -s '[:space:]' | ifne less -r
alper.txt:1:I am so wide alper world zorro the end alper
doo.tex:1:zorro alper alper alper skfjsdlkfj dslfj dslkj dslfkj sldk
此处搜索到的模式 ( zorro
) 以粗体红色显示。按以下顺序显示:
<filename>:<line_number>:<matching line>
我怎样才能通过这个管道来查找文件并使用 awk 在文件中进行搜索find
?
答案1
$ find . \( -name .git -prune \) -o \( -type f -exec \
awk -v OFS=':' '
FNR == 1 { fname=FILENAME; sub(/^\.\//,"",fname) }
/zorro/ { gsub(/ +/," "); gsub(/\t+/,"\t"); print "\033[33;35m" fname, FNR, $0 "\033[0m" }
' {} + \)
alper.txt:1:I am so wide alper world zorro the end alper
doo.tex:1:zorro alper alper alper skfjsdlkfj dslfj dslkj dslfkj sldk