Linux:Shell编程之文本处理器

目录

绪论

1、grep

2、sort  排序

3、uniq去重

4、tr

5、cut

6、split  文件拆分

7、paste文件合并


绪论

文本处理有三剑客:grep sed awk

文本处理器:针对文件的内容进行匹配或者过滤

*匹配任意一个或者多个字符
touch  1.txt  2.txt  3.txt
ls *.txt

?匹配任意一个字符(就是匹配单个字符)
ls ?.txt

[ ] 匹配范围内的任意单个字符
touch {a..z}.txt
ls [a-n].txt

1、grep

grep 过滤,针对文本内容进行过滤,也就是查找

1.1 grep选项

grep -i 忽略大小写,默认的可以不加

grep -n 显示匹配行号

grep -c 只统计匹配的行数

grep -v  取反,查找到的内容不显示

eg:grep -v  "root"  /etc/passwd

grep的作用就是过滤文本内容,是针对行来进行处理

grep -m 多个匹配的话, 可以限定显示的行数,匹配几次之后停止

eg:grep -m  2  "root"  /etc/passwd

grep -o 仅显示匹配到的字符串

grep -q 静默模式,什么都不输出

grep -A   就是after,后面跟数字,匹配到内容行后,向下展示几行

grep -B 就是before,匹配到当前行以及当前行的前几行

grep -C 匹配到自己所在的行,以及上下各几行

grep -e:逻辑或,可以匹配多个条件,实现多个选项的逻辑关系

 eg:grep -e  "root"  -e  "adm"  /etc/passwd

 grep -w 匹配整个单词

grep -E/egrep:使用正则表达式

grep -f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容

grep -r 递归目录,不处理软连接

grep -R 递归目录,处理软连接

grep  -v  "^#"  test.txt  显示不以#开头的行

2、sort  排序

sort:以行为单位,对文件内容进行排序,也可以根据不同的数据类型进行排序

格式:sort 选项 参数          cat 文件名 | sort 选项

常用的选项:sort

-f 忽略大小写,默认把大写字母排在前面 

eg:sort  -f  /opt/123.sh

-b 忽略每行前面的空格

-n 按照数字进行排序

-r 反向排序

-u 相同的数据,只显示一行,去重

-o 输出的文件名,将排序后的结果转存到指定的文件

eg:cat  test.txt  |  sort  -r

eg:将test.txt的内容按照原顺序输出搭配ky30.txt

cat  -n  test.txt  |  sort  -n  -o  ky30.txt

3、uniq去重

用于报告或者忽略文件中连续出现的重复行,经常与sort结合使用

格式:uniq 选项 参数 或者   cat 文件名 | uniq 选项

常用选项:

-c 统计连续重复的行的次数,并且合并重复的行,并打印不会改变文件内容

-u 显示仅出现一次的行,包括不连续的重复的行

-d 仅显示重复出现的行,必须是连续的重复行

4、tr

tr 对来自标准输入的字符进行替换,压缩和删除

tr 选项 参数      也可以结合|管道符使用

常用选项:

-c 保留字符集1的字符,用字符集2来替换其他的字符

eg:echo  20.0.0.30  |  tr  -c  "."  "  "

输出为:.  .  .   数字没了

不加-c就把.替换掉了

eg:把ABC替换成abc

echo  ABC  |  tr  "A-Z"  "a-z"

这里的A-Z:用引号引起来的都是正则表达式,匹配前面的输出内容

eg:abc,把ab的内容保留,把c替换成t

echo  abc  |  tr  -c  "ab"  "t"

-t 默认就是替换,可以不写

-s把重复出现的字符串压缩成一个字符串,也可以替换

eg:sort  -n  test.txt    |   tr  -s  "123"  "t"

sort  -n  test.txt    |   tr  -s  "\n"   "\n"  把连续多个空格压缩成一个

eg:替换成空行换行

 echo  $PATH  |  tr  -s  ":"  "\n"

5、cut

截取;和awk有相似之处,取列;对字段进行截取和裁剪

格式:cut 选项  参数  或者  cat 文件名 | cut 选项

-d 指定分割符,默认分隔符号是tab;不是空格

awk的默认分割符是空格,多个空格也会算一个

-f 按字段进行截取,指定要截取第几个字段

-complement 删除指定的字段

eg:cut  -d  ":"  -f  1-3  /etc/passwd    取第一列第二列第三列

如果是1,3那就是取第一列和第三列

eg:head  -n  2  /etc/passwd  |  cut  -d  ":"  --complement  -f  2

head  -n  3  /etc/passwd  |  cut  -d  ":"  -f  1-2

6、split  文件拆分

大文件拆分成若干小文件

-l 根据行数拆分

-b 指定文件大小来拆分 

eg:cp  /etc/passwd  /opt

split  -l  20  passwd  ky30     ky30是拆分后的文件名自己命名

split  -b  2m  httpd-2.4.29.tar.bz2  lt        2m表示2MB

7、paste文件合并

psate a b 和cat a b 的区别:paste是左右合并   cat 是上下文合并

eg:统计当前主机的连接状态

listen 监听,等待建立连接

estab 已经建立连接,连接处于在活动状态

ss  -antp  查看状态或者netstat  -antp

ss  -antp  |  grep  -v  "^state"  |  cut  -d  "  "  -f  1  |  sort  |  uniq  -c

eg:统计当前主机的连接数

Local  Address  为下面当前连接的主机

ss  -nt  |  tr  -s  "  "  |  cut  -d  "  "  -f  3 | sort  -n  |  uniq  -c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

曦雨天梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值