我写了一个小脚本,用于搜索字符串并打印当前行。但是我有点困惑地打印下一行。我对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}'