十二、文本处理三剑客awk、sed、grep

 

今日内容:

1、文本处理三剑客命令:sed、awk、grep
2、文件查找命令:find
3、上传下载:wget、curl、rz、sz
4、去重与重定向 >  >>
5、字符处理命令sort排序、uniq去重、cut处理有规律的文本、tr替换、wc统计
6、打包压缩tar

1、文本处理三剑客命令:sed、awk、grep(都支持管道)

1、sed流式编辑器

#sed 流式编辑器
处理完后默认将内容打印到屏幕
#选项:
-n 取消默认输出(打印)
-i 直接修改源文件内容(支持正则表达式)
例1:将1.txt里的egon替换为Egon:
sed 's#egon#Egon#g' 1.txt #会先打印到屏幕,不修改内容
sed -i 's#egon#Egon#g' 1.txt #直接修改原文件内容
PS:建议先不加-i选项,确认修改后,再用-i执行;
例2:将1.txt里的第一行和第三行的egon替换为Egon:
sed '3;5s#egon#Egon#g' 1.txt
规则:定位+命令
     没有定位代表定位所有
     行号定位
     正则定位
#命令:, 从第几到第几,只需一个p,如1,3p
; 第几和第几,分号左右需跟p,如1p;3pI 忽略大小写,在p前面
s 替换内容,如s///
g 全局替换,如s///g
d 删除delete
p 打印print
sed对比vim:
1>sed可把处理文件的规则先写好,之后再用同一套规则编辑多个文件,而vim只能一个个编辑,用于用一套规则处理多个文件;
2>sed处理文件,一次只处理一行,即同一时间内存中只有文件的一行,无论文件多大,都不会撑爆内存,可用于处理大文件;
#sed正则定位
sed '/^egon$/p' 1.txt #打印以egon开头并结尾的行
#PS:因有默认输出,会打印出不含2的行,含2的会打印两遍(因为有p,即print)
sed '/egon$/d' 1.txt  #删除以egon结尾的行
sed 's/egon/EGON/gi' 1.txt #替换所有的egon为EGON
#PS:I忽略了大小写,主要针对类似EgOn的字符:
sed -n '/egon/Ip' 1.txt

 

2、awk

#概念:主要擅长处理有规律的文本,主要用于做一些格式化处理
#格式:选项 '规则' 文件路径
#选项:
-F 指定分隔符,如-F:即指定分隔符为冒号,分隔符引号可加可不加,空格要加
&& 和,两者都满足
|| 或,两者满足一个即可
#行定位
NR:取行,NR==3,则取第三行
NF:取段,NF==7:则判断段数为7
#若放在命令里:
#则配合$使用,如print $(NF-1),即打印倒数第二段,它是倒着数
#$NF:取最后一段
, 从第几到第几
; 第几和第几
举例:打印出第3行的第三段内容:
awk -F 'NR==3{print $3}' #打印第三行的第三段
awk -F 'NR==3,5{print $}' #打印第三行和第五行的最后一段
cat /etc/passwd|awk -F: 'NR >= 3 && NR <= 5{print $1}' 
  #以冒号为分隔,打印出>=3和<=5的第一段
cat -n /etc/passwd |awk -F: 'NR >= 3 && NR <=6'
  #以冒号为分隔,打印出>=3和<=6的行
cat -n /etc/passwd |awk -F: 'NR >= 3 && NR <=6{print $3,$4}'
  #以冒号为分隔,打印出>=3和<=6的第三段和第四段
#正则定位:
awk -F: '/egon$/ NR==3{print $1,$2}' 
  #以冒号为分隔,打印出第三行的第一和第二段
awk -F: 'NR>=1 && NR<=3 && $1=="root"' /etc/passwd
  #以冒号为分隔,打印出>=1和<=3和第一段为root的行
awk -F" " {print $1,$2} 1.txt 等同于 awk -F {print $1,$2} 1.txt
  #以空格为分隔,打印出第一段和第二段的所有行
  #PS:空格分隔符可省略,默认即空格为分隔符
#特殊符号解释
$0           表示整个当前行
$1           每行第一个字段
NF          字段数量变量
NR          每行的记录号,多文件记录递增
FNR        与NR类似,不过多文件记录不递增,每个文件都从1开始
\t            制表符
\n           换行符
FS          BEGIN时定义分隔符
RS        输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~            匹配,与==相比不是精确比较
!~           不匹配,不精确比较
==         等于,必须全部相等,精确比较
!=           不等于,精确比较
&&      逻辑与
||             逻辑或
+            匹配时表示1个或1个以上

3、grep过滤

#擅长过滤
#用法:grep 选项 '过滤内容'
#项:
-n 显示行号
-i 忽略大小写,默认情况下会区分大小写
-l 过滤出包含关键字的文件名,而不是文件内容
-r 递归过滤,等同于-R
-v 取反
#用法
ps -aux | grep 'ssh'等同于 ps -aux | grep '[s]sh'
grep -rl 'byebye'|xargs sed -i 's/byebye/egon/g' #配合xargs才可替换内容
#PS:xargs 给其他命令传递参数的过滤器,擅长将标准输入数据转为命令的参数

4、ps 查看系统内所有进程信息

ps #查看系统所有进程信息
ps -aux 等同于 ps aux #常用选项参数组合

5、kill 杀进程

1>Linux命令结束进程:
-9 结束进程,需配合进程号执行
[root@peng ~]# ps aux |grep find
root       1918  0.0  0.1 120920  1852 pts/0    T    16:09   0:00 find / -name redhat
root       6750  0.0  0.0 112808   968 pts/0    R+   17:48   0:00 grep --color=auto find
[root@peng ~]# kill -9 1918
[root@peng ~]# ps aux |grep find

2>Windows命令结束进程:
tasklist #查看进程
tasklist | findstr "WeChat.exe" #过滤出微信
taskkill /F /PID  11445 #结束进程(PID号)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风お亦冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值