
写个脚本,使用for循环,设一个变量i 代表的是行号,从1开始,然后每次执行加1,类似于
a=`cat file|wc -l`
for (( i = 0; i < = $a; i++ ))
do
j = `cat file |awk "NR==$i{print}"|awk '{print $2}'`
k =`cat file |awk "NR==$i{print}"`
if [[ j -eq xxx ]];
then echo $k
fi
done
没有测 但是大概就是这么个意思
那用awk吧
[root@firewall ~]# cat testlist
1
2
3
4
5
6
[root@firewall ~]# awk '{a[NR]=$0}END{for (j=1;j<=NR;j++) if (a[j]~/3/) {print a[j+1];exit}}' testlist
4
我直接举例了,不明白HI我。
[root@firewall ~]# cat testlist
1
2
3
4
5
6
[root@firewall ~]# grep -A1 3 testlist
3
4
[root@firewall ~]# grep -A1 3 testlist | grep -v 3
4
一条语句搞定,假定你要找到最后一个ABC以及后面的10行,
当然这条语句能够执行的基础是,1log里确实有ABC这个字符串,否则下面一条语句就会出现失败,更好的方法是在脚本中分成两条语句,一条语句判断是否有ABC以及行号,第二条语句是用sed来打印。你可以自己根据下面的命令来搞定,我就不多说了。
sed
-n
"$(grep
-n
ABC
1log
|
tail
-1
|
cut
-d
:
-f
1),+10p"
ABClog
以上就是关于shell脚本中怎么输出第二列为指定内容的所有行的信息全部的内容,包括:shell脚本中怎么输出第二列为指定内容的所有行的信息、shell 取下一行、利用shell脚本如何提取一个文件中某一特定行和下面若干行的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)