1

文字列を検索して現在の行を出力する小さなスクリプトを作成しました。しかし、mは次の行を印刷するのに少し混乱しました。私は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
4

3 に答える 3

2

grep が GNU の場合:

 grep -A1 pattern file
于 2012-10-17T10:37:54.560 に答える
0

ここで bash の例を示します。これは、ディレクトリ内の一連のテキスト ファイルを考慮したものです。必要に応じて操作できます。

1ディレクトリ内

    grep "search string" *.txt

検索またはサブディレクトリに移動

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

これがお役に立てば幸いです。

于 2012-10-17T10:39:25.770 に答える
0

awkを使用してそれを行うことができます:

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

上記は 1 つのファイルの場合です。このコマンドは、一致したパターン行とファイル内の次の行を表示します。

ディレクトリ構造内のすべてのファイルで再帰的に実行する場合は、次のようにします。

find . -name -type f|xargs awk '/Message/{print;getline;print}'
于 2012-10-17T10:40:08.980 に答える