用于查找字符串并以递归方式打印当前行和下一行的 shell 脚本



我写了一个小脚本,用于搜索字符串并打印当前行。但是我有点困惑地打印下一行。我对bash/perl/python没问题

#!/bin/bash  
CURRENT_DIR=`pwd`
cnt=0
for dir in $(find $CURRENT_DIR -type d)
do
    for myFile in $dir/*  
    do 
        if [ -f "$myFile" ]; then
            cat $myFile | while myLine=`line`
            do
                allFile="$myLine"    
                if echo "$myLine" | grep -q $1 ; then 
                    echo "$myFile" "$allFile" ""
                fi  
                #echo 'expr $count+1'
                #echo   "$allFile"   ""
            done #LINE  
        fi
    done #FILE
done # DIRECTORY

如果你的 grep 是 GNU:

 grep -A1 pattern file

我在 bash 中给你举一个例子,这个考虑了一个目录中的一堆文本文件。您可以根据需要操作它。

在一个目录内

    grep "search string" *.txt

搜索或转到子目录

    find /full/path/to/dir -name "*.txt" -exec grep "search string" {} ;

希望这对您有所帮助.

你可以使用awk来做到这一点:

awk '/Message/{print;getline;print}' your_file

以上是针对单个文件。此命令将显示匹配的图案线和文件中的下一行。

如果要在目录结构中的所有文件中执行递归操作,则:

find . -name -type f|xargs awk '/Message/{print;getline;print}'

相关内容

  • 没有找到相关文章

最新更新