THU.文本处理三剑客

文本处理三剑客

Sed

  • 流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑
# 用法
sed 选项 '定位+命令' 文件路径# 选项
-n 取消默认输出
-r 支持扩展正则元字符(由于尚未学习正则,所以此处暂作了解)
-i 立即编辑文件# 定位
行定位:1定位到第一行1,3代表从第1行到第3行不写定位代表定位所有行
正则表达式定位:/egon/ 包含egon的行/^egon/ 以egon开头的行 /egon$/以egon结尾的行"""
数字+正则表达式定位"1,8p"代表打印1到8行,"1,/egon/p"则代表取从第1行到首次匹配到/egon/的行
"""# 命令
d
p
s///g
命令可以用;号连接多条,如1d;3d;5d代表删除1,3,5行# =========================》用法示例:p与d
[root@localhost ~]# sed '' a.txt
egon1111
22222egon
3333egon33333
4444xxx44444
5555xxx55555xxxx555xxx
6666egon6666egon666egon
[root@localhost ~]# sed -n '' a.txt
[root@localhost ~]#
[root@localhost ~]# sed -n '1,/xxx/p' a.txt
egon1111
22222egon
3333egon33333
4444xxx44444
[root@localhost ~]# sed '1,/xxx/d' a.txt
5555xxx55555xxxx555xxx
6666egon6666egon666egon
[root@localhost ~]# sed '1d;3d;5d' a.txt
22222egon
4444xxx44444
6666egon6666egon666egon# =========================》用法示例: s///g
[root@localhost ~]# cat a.txt
egon1111
22222egon
3333egon33333
4444xxx44444
5555xxx55555xxxx555xxx
6666egon6666egon666egon
[root@localhost ~]# sed 's/egon/BIGEGON/g' a.txt  # 把所有行的所有的egon都换成BIGEGON
BIGEGON1111
22222BIGEGON
3333BIGEGON33333
4444xxx44444
5555xxx55555xxxx555xxx
6666BIGEGON6666BIGEGON666BIGEGON
[root@localhost ~]#
[root@localhost ~]# sed '/^egon/s/egon/GAGAGA/g' a.txt  # 以egon开头的行中的egon换成GAGAGA
GAGAGA1111
22222egon
3333egon33333
4444xxx44444
5555xxx55555xxxx555xxx
6666egon6666egon666egon
[root@localhost ~]# sed '6s/egon/BIGEGON/' a.txt  # 只把第6行的egon换成BIGEGON,加上g代表将整行 egon 替换为 EGON
egon1111
22222egon
3333egon33333
4444xxx44444
5555xxx55555xxxx555xxx
6666BIGEGON6666egon666egon
[root@localhost ~]#
[root@localhost ~]# sed '1,3s/egon/BIGEGON/g' a.txt # 把1到3行的egon换成BIGEGON
BIGEGON1111
22222BIGEGON
3333BIGEGON33333
4444xxx44444
5555xxx55555xxxx555xxx
6666egon6666egon666egon[root@localhost ~]# cat a.txt | sed '1,5d'  # sed也支持管道
6666egon6666egon666egon
# 加上-i选项,直接修改文件,通常会在调试完毕确保没有问题后再加-i选项

Grep

  • grep擅长过滤内容
# 用法
grep 选项 '正则' 文件路径# 选项
-n, --line-number           在过滤出的每一行前面加上它在文件中的相对行号
-i, --ignore-case           忽略大小写
--color                     颜色
-l, --files-with-matches    如果匹配成功,则只将文件名打印出来,失败则不打印通常-rl一起用,grep -rl 'root' /etc
-R, -r, --recursive         递归# 示例
[root@localhost ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash[root@localhost ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
44:egon:x:1000:1000:egon:/home/egon:/bin/bash[root@localhost ~]# grep -rl 'root' /etc    # grep也支持管道,我们可以发现三剑客命令都支持管道
[root@localhost ~]# ps aux |grep ssh
root        968  0.0  0.2 112908  4312 ?        Ss   14:05   0:00 /usr/sbin/sshd -D
root       1305  0.0  0.3 163604  6096 ?        Ss   14:05   0:00 sshd: root@pts/0
root       1406  0.0  0.3 163600  6240 ?        Ss   14:05   0:00 sshd: root@pts/1
root       2308  0.0  0.0 112724   984 pts/1    R+   15:30   0:00 grep --color=auto ssh
[root@localhost ~]# ps aux |grep [s]sh
root        968  0.0  0.2 112908  4312 ?        Ss   14:05   0:00 /usr/sbin/sshd -D
root       1305  0.0  0.3 163604  6096 ?        Ss   14:05   0:00 sshd: root@pts/0
root       1406  0.0  0.3 163600  6240 ?        Ss   14:05   0:00 sshd: root@pts/1

Awk

  • awk主要用于处理有格式的文本,例如/etc/passwd这种.事实上awk是一门编程语言,可以独立完成很强大的操作
# 用法
awk 选项 'pattern{action}' 文件路径# 选项
-F 指定行分隔符# 工作流程
awk -F: '{print $1,$3}' /etc/passwd1、awk会读取文件的一行内容然后赋值给$0
2、然后awk会以-F指定的分隔符将该行切分成n段,最多可以达到100段,第一段给$1,第二段给$2,依次次类推
3、print输出该行的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致
4、重复步骤1,2,3直到文件内容读完# 内置变量
$0 一整行内容
NR 记录号,等同于行号
NF 以-F分隔符分隔的段数# pattern可以是
/正则//正则/       # 该行内容匹配成功正则$1 ~ /正则/  # 第一段内容匹配成功正则$1 !~ /正则/  # 第一段内容没有匹配成功正则
比较运算:NR >= 3 && NR <=5  # 3到5行$1 == "root"      # 第一段内容等于root# action可以是
print $1,$3# 用法示例
[root@localhost ~]# cat a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# awk -F: '/^root/{print $1,$3}' a.txt
root 0
[root@localhost ~]# awk -F: '$1 ~ /^d/{print $1,$3}' a.txt
daemon 2
[root@localhost ~]# awk -F: '$1 !~ /^d/{print $1,$3}' a.txt
root 0
bin 1
adm 3
lp 4
[root@localhost ~]# awk -F: 'NR>3{print $1}' a.txt
adm
lp
[root@localhost ~]# awk -F: '$1 == "lp"{print $0}' a.txt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# [root@localhost ~]# cat a.txt | awk -F: '{print $1}' # awk也支持管道
root
bin
daemon
adm
lp
[root@localhost ~]#

THU.文本处理三剑客相关推荐

  1. 文本处理三剑客之sed(流编辑器)

    文本处理三剑客之sed(流编辑器) - 行编辑器 把当前处理的行存储在临时缓冲区,称为模式空间,然后把模式空间的内容送往屏幕,一行一行的处理,主要用来编辑一个或者多个文件. - 用法 sed [opt ...

  2. Linux文本处理三剑客之sed

    推荐新手阅读[酷壳]或[骏马金龙]开篇的教程作为入门.骏马兄后面的文章以及官方英文文档较难. [酷壳]:https://coolshell.cn/articles/9104.html [骏马金龙-博客 ...

  3. linux 下 grep -c sh* /etc/passwd,Linux文本处理三剑客--grep

    稍微接触过linux都会知道有三个非常强大文本处理工具,那就是grep.sed和awk,想必都有听说过吧. Linux文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pat ...

  4. 文本处理三剑客之 sed 流编辑器(基础部分)

    文本处理三剑客之 sed 流编辑器(基础部分) SED 即 Stream EDitor.和交互式编辑器如 vi 需要打开整个文件不同,sed 是行编辑器,每次处理一行,比较适合在脚本中进行无交互编辑, ...

  5. GNU awk 的用法-文本处理三剑客之一

    GNU awk 的用法 awk 简介 文本处理三剑客 awk 工作原理 awk 用法 1.print 2.变量 2.1 内建变量 2.2 自定义变量 3.printf 命令 4.操作符 4.1 算术操 ...

  6. shell学习心得笔记系列一 文本处理三剑客

    理解 整理自网络资料,非原创版权,只用于学习理解的笔记和资料,禁止侵权 shell语言的理解:重点在于它是一个解释型语言,学习的shell语法写出的shell脚本,最终由linux服务器的解释器逐句解 ...

  7. linux100day(day4)--文本处理三剑客

    在介绍三剑客之前,先来认识一下通配符和正则表达式 通配符 正则表达式 作用:通过一些特殊字符,来表示一类字符内容 1.字符匹配 .     任意一个字符 [ ]   范围内的任意一个字符 [^ ] 取 ...

  8. 9、Linux文本处理三剑客之sed命令

    Linux 用于处理文本数据的三剑客,分别为 grep 命令.awk 命令和 sed 命令,再加上正则表达式,就可以处理文本文件中各种常见的数据需求了.一般来说,grep 命令倾向于查找,sed 命令 ...

  9. 文本处理三剑客与正则表达式详解

    我们知道在 Linux 中,"一切皆文件",作为系统管理员或者程序员我们每天都需要和大量的文本文件打交道.Linux 系统为我们提供了三个文本处理工具:grep, sed, 和 a ...

最新文章

  1. 中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算
  2. Android--相对布局
  3. cookie共享子域名
  4. Ubuntu/Fedora高版本安装海思SDK的方法
  5. mysql delette_关于字符串:首字母大写MySQL
  6. 【Matlab】扩展卡尔曼滤波器原理及仿真(初学者入门专用)
  7. android so文件崩溃,android 7.0 因为.so文件而崩溃事件解决
  8. 公有云关闭潮或显端倪,企业如何选择?
  9. Docker 监控- Prometheus VS Cloud Insight
  10. 《数据算法:Hadoop_Spark大数据处理技巧》艾提拉笔记.docx 第1章二次排序:简介 19 第2章二次排序:详细示例 42 第3章 Top 10 列表 54 第4章左外连接 96 第5
  11. 智慧校园安防平台应用解决方案
  12. 北斗三号频点_海格通信发布国内首批北斗三号双模应用专用芯片
  13. matlab如何写一个循环,matlab中for循环怎么写
  14. 2022牛客寒假算法基础集训营1
  15. Jetson nano 开机自动连接 Wifi
  16. python中怎么打印出表格_Python 表格打印
  17. Winform 俄罗斯方块儿练习
  18. Docker容器搭建运行python深度学习环境
  19. Navicat Premium v12 破解教程(转)
  20. Magic Leap 2正式发布:3299美元起,9月底出货

热门文章

  1. 微信小程序云开发---发送邮件功能
  2. 一个有成就感又有挫败感的日子
  3. 采用RNN为小Baby起个英文名字by SixInNight
  4. 泛微e-cology和Oracle无法启动的解决方案
  5. 计算机过去.现在的技术发展,影像技术与设备的过去,现在与未来
  6. 小龟机器人图形编程第一课——小车动起来
  7. Python 使用摄像头监测心率!这么强吗?
  8. 蓝牙解码格式哪个最好_蓝牙耳机哪个品牌最好?百位声学工程师说了真心话!_...
  9. 机器学习-有监督无监督
  10. 我猜你也在找内网渗透,这篇难道还不够你嚼烂?