文本处理三剑客命令

一、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


正则定位

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

   [root@localhost ~]# sed '1,3s/egon/ddd/g' bug      #替换全部

   [root@localhost ~]# sed '1,3s/egon/ddd/i' bug         #不区分大小写

   [root@localhost ~]# cat bug | sed 's/egon/nnn/'

  [root@localhost ~]# head -3 bug |sed 's/egon/mmm/'      
  [root@localhost ~]# ifconfig | sed 's/ens33/etho/' #替换网卡名

二 、awk

  • 主要擅长处理有规律的文本,按照某一段截取,主要用于做一些格式化处理
  • 用法:awk 选项 '规则' 文件路径
  • 选项:
    • -F: 指定分隔符 
    • 规则:定位+命令
  • 定位:
    • 行号定位:
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
  • 正则定位
    • awk -F: '//{print $1,$2}' 文件路径
    • 没有定位代表定位所有行
  • 命令:{print $n}
  • 用法
    • sed 选项 '定位+命令' 文件路径
    • awk -F: '定位+命令' 文件路径
    • sed 选项 '3,5p' 文件路径
    • awk -F: 'NR>=3 && NR<=5{print $0}' 文件路径
[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的行就算过滤成功,会返回文件名
  • [root@localhost ~]# grep -rl 'root' /etc/passwd
  • linux进程查看
[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关闭进程
快捷键:ctrl+alt+delete

C:Usersoldboy>taskkill /F /PID 12080 成功: 已终止 PID 为 12080 的进程。 C:Usersoldboy>tasklist | findstr "WeChat.exe" WeChat.exe 11412 Console 1 127,836 K C:Usersoldboy>taskkill /F /PID 11412 成功: 已终止 PID 为 11412 的进程。
原文地址:https://www.cnblogs.com/taoxiaoxin/p/13865050.html