shell脚本查找字符串并递归打印当前行和下一行

时间:2012-10-17 10:30:26

标签: python perl bash 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

3 个答案:

答案 0 :(得分:2)

如果你的grep是GNU:

 grep -A1 pattern file

答案 1 :(得分:0)

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

在一个目录中

    grep "search string" *.txt

搜索或转到子目录

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

希望这会对你有所帮助。

答案 2 :(得分:0)

你可以用awk:

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

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

如果你想在目录结构中的所有文件中递归,那么:

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