14.常用文本处理工具

1.head和tail命令


head命令:显示文本指定前行数,默认显示10行。
tail 命令:显示文本指定后行数,默认显示10行。

1.截取某一行,截取ifcongfig输出的内容第二行
#ifconfig | head -n2 |tail -n1

2.-c选项截取字符串,下面例子是生成一个有数字字母随机生成的10位数
#cat /dev/urandom | tr -dc ‘[:alnum:]’ |head -c10

2.tr命令


应用:转换和删除字符
-d:删除
-c:取反
\n:换行
\r:回车
\t:tab键
[:alpha:]:任意字母
[:alnum:]:数字和字母
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:blank:]:空格
把小写字母转换大写
#tr ‘a-z’ ‘A-Z’ < /etc/issue

把a–1 b–2 c–3对应转换
#tr ‘abc’ ‘123’ < 文件名

#tr ‘abcd’ ‘123’
abcd
1233

#tr -t ‘abcd’ ‘123’
abcd
123d

-d:删除功能
#tr -d ‘abc’ 把包含abc字母删除
abcddsc
dds

#tr -d ‘[:alpha:]’ 把字母删除
asdsaFGH42hsadGH
42

下例子:要执行ctrl+d,结束才有结果,-c:是取反对意思
[root@Centos7 ~]#tr -dc ‘[:alpha:]’ 除了字母之外的都删除,数字包括回车键等
asdasHG8297423jhasd
asdasHGjhasd[root@Centos7 ~]#

把换行删掉
#tr -d ‘\n’

把tab键删除
#tr -d ‘\t’

3.cut命令


应用:按列抽取,显示指定内容

cut的选项:
-b:仅显示行中指定直接范围的内容;

-c:仅显示行中指定范围的字符;

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;

-f:显示指定字段的内容;

-n:与“-b”选项连用,不分割多字节字符;

–complement:补足被选择的字节、字符或字段;

–out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;

例子1:
#vim test.txt
01 chen 1
02 wang 2
03 liu 3

# cut -d” ” -f1 test.txt
这里写图片描述
-d:指定分隔符为”空格”
-f1:显示第一个字段

# cut -d” ” -f1 –complement test.txt
这里写图片描述
–complement:表示除了指定第一个字段之外的字段

例子2:
#vim test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

# cut -c1-3 test.txt
这里写图片描述
-c1-3:表示打印字符第一个到第三个

#cut -c-4 test.txt
这里写图片描述
-c-4:表示打印前4个字符

# cut -c4- test.tx
这里写图片描述
-c4-:表示从第4个字符开始(包含第四个)到结束

4.paste命令


应用:合并两个文件,同行号的列到一行

-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
paste f1 f2
paste -s f1 f2
paste -d “” f1 f2 ## 2个文件横向合并
cat f1 f2 ## 2个文件纵向合并

这里写图片描述

这里写图片描述

这里写图片描述

6.wc统计行和字符的工具


//统计行数
wc -l file
//统计单词数
wc -w file
//统计字节数(byte),也就是文件大小
wc -c file
//统计字符,字符包括空格、换行、tab键
wc -l file

7.sort命令


应用:排序,方便以后统计,把整理过的文本显示在STDOUT,不改变原始文件

格式:sort [options] file(s)
常用选项:
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c做为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次

1.对/etc/passwd文件的uid进行排序
#sort -t: -k3 -n /etc/passwd sortmorse对字符串排序的,-n是对数字排序

2.对/etc/passwd文件的用户名排序
#sort -t: -k1 /etc/passwd

3.抽出/etc/passwwd中的用户名和uid,按uid排序,如果需要倒序排序,用-r
#cut -d: -f1,3 /etc/passwd |sort -t: -k2 -n
#cut -d: -f1,3 /etc/passwd |sort -t: -k2 -nr

4.对文件排序,去掉重复的
#sort -u file(文件名)

5.-R 选项实现随机排序,下例实现1到73,随机抽一个数。
#seq 73 | sort -R |head -1

8.uniq命令


uniq命令:从输入中删除前后相接的重复的行
uniq [OPTION]… [FILE]…
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
注:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c

uniq命令和sort命令常常配合一起使用:
sort |uniq -c |sort -rn
先排序,然后uniq -c去掉重复,并统计重复有多少个,然后sort -n根据之前的统计数进行排序,-r进行倒序排,即由大到小排。

9.diff命令和patch命令


diff 命令的输出被保存在一种叫做“补丁”的文件中
使用 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件
patch 复制在其它文件中进行的改变(要谨慎使用)
适用 -b 选项来自动备份改变了的文件
#diff -u f1 f2
$ diff -u foo.conf foo2.conf > foo.patch

$ patch -b foo.conf foo.patch

这里写图片描述

10.练习


.1、找出ifconfig “网卡名” 命令结果中本机的IPv4地址
#ifconfig | grep inet |tr -s ” ” “:”|cut -d: -f3|head -1

.2、查出分区空间使用率的最大百分比值
#df -h | grep /dev/sd | tr -s ” ” % |cut -d% -f5|sort -rn|head -1

.3、查出用户UID最大值的用户名、UID及shell类型
#cat /etc/passwd |cut -d: -f1,3,7|sort -t: -k2 -rn |head -1

.4、查出/tmp的权限,以数字方式显示
#stat /tmp|head -4|tail -1|cut -d”/” -f1|cut -d”(” -f2

.5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
#netstat -nt |tr -s ” ” :|cut -d: -f6

6.获取IP:
#ifconfig | grep inet|head -1|tr -s ” ” :|cut -d: -f3
#ifconfig| grep -w inet|grep -o “[0-9.]{1,}”|head -1
#ifconfig | grep -o “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}” |head -1
#ifconfig | grep -o “([0-9]{1,3}.){3}[0-9]{1,3}”|head -1 简化版
#ifconfig| grep -o “inet [0-9.]+”|cut -d” ” -f2 |head -1

7.获取系统主版本
#cat /etc/centos-release | tr -dc ‘[:digit:].’|cut -d. -f1
#cat /etc/redhat-release | tr -dc ‘[:digit:].’|cut -d. -f1
#cat /etc/redhat-release | grep -Eo “[[:digit:]]+” |head -1

8.获取服务器当前IP连接数
#netstat -nt

9.取2个文件的交集,即把重复的打印出来,用到uniq -d
##cat f1 f2 |sort|uniq -d
#grep -f f1 f2

10.查看access.log文件的访问ip地址,并把前10个访问数ip打印出来
[root@Centos7 data]#cat access_log |cut -d” ” -f1|sort |uniq -c|sort -rn|head -10
2000 192.168.32.17
1100 192.168.32.7
5 192.168.32.5

11.查看172.16.34.0/24网段 有哪些IP打开着
#nmap -v -sP 172.16.34.0/24 |grep -B1 “up”| grep “Nmap scan”|cut -d” ” -f5

12.从1-100中包含9数字的有多少个。
#seq 100|grep 9|wc -l

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值