样例:
1 2 3 4 5 6 7 8 9 10
| cat test.txt aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
|
使用sed
使用sed过滤指定行!(以过滤eeee为例)
1 2
| #匹配eeee所在行,并打印eeee后3行 sed -n '/eeee/,+3p' test.txt
|
打印匹配行的上一行
1 2 3
| #x交换空间,p打印,h当前模式空间中内容覆盖至缓存区 #sed命令参数太过复杂,暂时记录这这里 sed -n '/eeee/{x;p};h' test.txt
|
使用grep
使用grep先确定匹配行号,再对行号前后增加!(以过滤eeee为例)
1 2
| #获取eeee行号 cat test.txt grep -nE "^eeee$"awk -F":" '{print $1}'
|
1 2 3 4 5 6 7 8 9 10
| #获取eeee所在行号 NUM=`cat test.txt grep -nE "^eeee$"awk -F":" '{print $1}'` #eeee所在行号的上一行 NUM_1=`echo "$NUM-1"bc` #eeee所在行号的下一行 NUM1=`echo "$NUM+1"bc`
sed -n "$NUM_1"p test.txt sed -n "$NUM"p test.txt sed -n "$NUM1"p test.txt
|
执行结果如下: