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