前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本处理三剑客命令

文本处理三剑客命令

作者头像
贾维斯Echo
发布2023-10-18 11:36:10
2080
发布2023-10-18 11:36:10
举报

一、sed 

一 、sed

  • sed->流式编辑器:擅长用既定的规则编辑不同的文件 
  • sed 对比 vim
    • sed可以把处理文件的规则事先写好,然后用同一套规则编辑多个文件而vim只能一个个编辑===》用于用一套规则处理多个文件
    • 2、sed处理文件,一次只处理一行,即同一时间内存中只有文件的一行内容无论文件多大,都不会对内存造成过大的压力====》用于处理大文件
  • sed用法
    • sed 选项 '规则' 文件
    • 选项:-n 取消默认输出
      • -i 把输出到屏幕中的内容(规则处理的结果+默认输出的结果)
  • 规则:定位+命令
  • 定位方式:
    • 行号定位:
      • sed '1p' a.txt 打印第一行
      • sed '1,3p' a.txt 
      • sed '3p;5p' a.txt

正则定位

代码语言:javascript
复制
sed '/^egon$/p' a.txt          #这一行只能有egon这个字符
代码语言:javascript
复制
[root@localhost ~]# sed '1,/egon/p'  bug        #打印第一行首次匹配到/egon/的行
  • 没有定位代表定位所有行
代码语言:javascript
复制
[root@localhost ~]# sed ' ' bug
  • 命令:
    • d           删除
    • p           打印
    代码语言:javascript
    复制
    [root@localhost ~]# sed '1d;3d;5d' bug
    • s///gi      替换
代码语言:javascript
复制
[root@localhost ~]# sed '1d;3d;5d' bug
代码语言:javascript
复制
  sed '1,3s/egon/EGON/' 文件
  sed '/^egon/s/egon/EGON/' 文件

二 、awk

  • 主要擅长处理有规律的文本,按照某一段截取,主要用于做一些格式化处理
  • 用法:awk 选项 '规则' 文件路径
  • 选项:
    • -F: 指定分隔符 
    • 规则:定位+命令
  • 定位:
    • 行号定位:
代码语言:javascript
复制
awk -F: 'NR == 3{print $1,$3}' /etc/passwd
awk -F: 'NR >= 3 && NR <=5{print $1,$3}' /etc/passwd  
awk -F: 'NR <= 3 || NR >=8{print $1,$3}' test.txt 
awk -F: 'NR == 3 || NR ==5 || NR==7{print $1,$3}' test.txt
  • 正则定位
代码语言:javascript
复制
awk -F: '//{print $1,$2}' 文件路径
    • 没有定位代表定位所有行
  • 命令:{print $n}
  • 用法
    • sed 选项 '定位+命令' 文件路径
    • awk -F: '定位+命令' 文件路径
    • sed 选项 '3,5p' 文件路径
    • awk -F: 'NR>=3 && NR<=5{print $0}' 文件路径
代码语言:javascript
复制
[root@localhost ~]# head -10 /etc/passwd >1.txt

[root@localhost ~]# awk -F: 'NR<=3 || NR <=8{print $1,$3}' 1.txt

[root@localhost ~]# awk -F: 'NR>=3 && NR<=5{print $0}' 1.txt 

[root@localhost ~]# awk -F' ' '{print $1,$2}' 2

[root@localhost ~]# ifconfig ens33 | awk 'NR == 2{print $0}'
  inet 192.168.12.239 netmask 255.255.255.0 broadcast 192.168.12.255

[root@localhost ~]# ifconfig ens33 | awk 'NR == 2{print $2}'
  192.168.12.239

[root@localhost ~]# ifconfig ens33 | awk 'NR == 2{print $2}' | awk -F. '{print $1}'
  192


[root@localhost ~]# awk -F: '{print NF}' 1.txt  #这个文件以:分割,然后打印出每一行被切了多少的数量

三 、grep

  • 擅长过滤:从一堆内容筛选出你想要的内容
  • grep 选项 "过滤规则" 文件
  • grep -n "root" /etc/passwd # 显示行号
  • grep -i "" /etc/passwd # 忽略大小写
  • grep -l 'egon' a.txt # 如果文件中但凡是存在包含egon的行就算过滤成功,会返回文件名
代码语言:javascript
复制
[root@localhost ~]# grep -rl 'root' /etc/passwd
  • linux进程查看
代码语言:javascript
复制
[root@localhost ~]# ps aux | grep '[s]sh'

[root@web01 ~]# ps aux |grep 'vim'
  root 9825 0.0 0.5 151692 5212 pts/1 S+ 12:05 0:00 vim a.txt
  root 10190 0.0 0.0 112724 988 pts/0 R+ 12:30 0:00 grep --color=auto vim

[root@web01 ~]# ps aux |grep '[v]im'
  root 9825 0.0 0.5 151692 5212 pts/1 S+ 12:05 0:00 vim a.txt

[root@web01 ~]# kill -9 9825
  • windows关闭进程
代码语言:javascript
复制
快捷键:ctrl+alt+delete

C:\Users\oldboy>taskkill /F /PID 12080
成功: 已终止 PID 为 12080 的进程。

C:\Users\oldboy>tasklist | findstr "WeChat.exe"
WeChat.exe 11412 Console 1 127,836 K

C:\Users\oldboy>taskkill /F /PID 11412
成功: 已终止 PID 为 11412 的进程。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档