linux下文本操作

----替换----

  1. 文件内全部替换:

:%s#abc#123#g (如文件内有#,可用/替换,:%s/abc/123/g)
–注:把abc替换成123

(或者: %s/str1/str2/g 用str2替换文件中所有的str1)

  1. 文件内局部替换:

:20,30s#abc#123(如文件内有#,可用/替换,:%s/abc/123/g)
–注:把20行到30行内abc替换成123

-------跳转、删除--------

在命令模式输入 shit+g #跳至末位

gg #首位

:10 # 转到10行

:1,.d # 删除首行至当前行的内容

:set number #设置显示行号

关于删除的一些说明:

在 vi 中,“ . ” 表示当前行,“ 1,. ” 表示从第一行到当前行, “ d ” 表示删除。
如果只是想删除某一行,那么把光标指到该行,然后输入 dd 即可

过滤出关键字附近的日志

—按行号查看

因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志, cat -n test.log |grep “地形” ,得到"地形"关键字所在的行号是102行. 此时如果我想查看这个关键字前10行和后10行的日志:

cat -n test.log |tail -n +92|head -n 20
tail -n +92    #表示查询92行之后的日志
head -n 20     #则表示在前面的查询结果里再查前20条记录

按日期查看:

通常我们非常需要查找指定时间端的日志
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效.

关于日期打印,可以先 grep ‘2014-12-17 16:17:20’ test.log 来确定日志中是否有该时间点,以确保第4步可以拿到日志
如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:
(1)使用more和less命令, 如: cat -n test.log |grep “地形” |more 这样就分页打印了,通过点击空格键翻页
(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:
cat -n test.log |grep “地形” >xxx.txt

一、在某行(指具体行号)前或后加一行内容

#第4行末追加一行,内容为test
sed -i ‘N;4atest’ test.txt
#第4行行追加一行,内容为test
sed -i ‘N;4itest’ test.txt

#匹配到test字段的行行插入一行
find . -name test.txt|xargs sed -i '/test/i

#所有行增加
sed -i ‘s/^/ABC/’ test.txt

#所有行添加
sed -i ‘s/$/XYZ/’ test.txt

#第5行添加文件a.txt的内容
sed -i ‘5 r a.txt’ test.txt

#oooo行文件a.txt的内容
sed -i ‘/oooo/r a.txt’ 5.txt

二、删除操作

#删除指定行,例如第5行
sed -i ‘5 d’ test.txt

#删除首行
sed -i ‘1d’ test.txt

#删除末行
sed -i ‘$d’ test.txt

#删除空行
sed -i ‘/^$/d’ test.txt

#剔除空格
sed -i ‘s/[ ]*//g’ test.txt

#删除车符
sed -i ‘s/^M//g’ test.txt

#删除指定字段的下一行
sed -i ‘/test/{n;d}’ test.txt #匹配到test字段

#删除指定字段的上一行
sed -i -e :a -e ‘$!N;s/.*n(.*test)/1/;ta’ -e ‘P;d’ test.txt #匹配到test字段

三、其他操作

#将所有的行合并成一行,并用指定字符分割
sed ‘:a;N;$!ba;s/\n/,/g’ test.txt

四、处理以下文件内容的命令

awk ‘/^ +/{p++}/?/{t=s=0;v++;k[v]=p;p=0;next}!t&&!/[0-9]/{s++;a[s]=a[s]?a[s]"\t"$0:$0;}/1+/{m[++q]=$0;if($0>n) n=$0}
END{for(i=1;i<=n;i++) {print a[i];if(i<=v) {t=t?t"\t"m[i]:m[i];d=d?d"\t?":"\n?"}}print t,d}’ 文件名

grep -i -nu “heap memory” info.log
查找“heap memory”位置 和具体内容


  1. 0-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值