Linux---Centos7三剑客命令

一:系统的三剑客命令:

1:grep 擅长对信息进行过滤
2:sed 修改替换文件内容,主要是对文件行内容进行操作
3:awk 擅长统计分析文件内容 主要对文件列内容进行操作
下列对三个命令进行分别介绍用法:

二:三剑客–老三:grep

grep主要擅长对信息进行过滤,这是grep主要的作用。
grep主要的参数:
-A:显示指定信息的后几行      after
-B:显示指定信息的前几行      befor
-C:显示指定信息的中间        centor
-v:对过滤的信息进行取反 	
-o:对过滤信息显示过滤的过程
-c:统计信息并显示出来			count

读者可以自己创建操作环境:
-B用法:
[root@oldboyedu ~ ]# grep -B  1 "old02" wei.txt 
old01
old02
--
old01
old02
--
old01
old02
--
old01
old02
-A用法:
显示old02下一行信息: after  之后
[root@oldboyedu ~ ]# grep -A  1 "old02" wei.txt 
old02
old03
--
old02
old03
--
old02
old03
--
old02
old03
-C用法:
既显示上一行 也显示下一行内容  center
[root@oldboyedu ~ ]# grep -C  1 "old02" wei.txt 
old01
old02
old03
old01
old02
old03
old01
old02
old03
--
old01
old02
old03
-c用法:
统计old02 在文件中出现几次  count 计数
[root@oldboyedu ~ ]# grep -c "old02" wei.txt 
4
-v用法:把开头有#的排除掉,只看没有#的行
grep -v "^#" /etc/selinux/config
注释:^这个符号是基础正则符号,表示以什么开头

三:三剑客–老二:sed

sed:字符流编辑工具(行编辑)--按照每行进行编辑
sed命令作用说明:
1):擅长对行进行操作
2):擅长将文件的内容进行修改调整/删除
具体功能作用:
1:增加	
2:删除
3:修改	
4:查找 


sed命令的语法格式
sed 参数	条件-处理			要处理的文件信息

sed指令信息:****
a			增加	下面/下一行
c			替换	一整行
d			删除
i			插入	前面/上一行
p			输出
s			替换  可以直接进行替换工作
 
sed参数信息:
-n			取消默认输出
-r			识别扩展正则
-i 			真是编辑文件(将内存信息覆盖到磁盘中)
-e			识别sed多个操作指令
 
 读者可以自己创建测试环境:下面是我的测试环境:
 [root@oldboyedu ~ ]# cat person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO


测试如下:

根据行号
01:显示单行行号
	[root@oldboyedu ~ ]# sed -n '3p' person.txt 
	103,Alex,COO
02:显示多行行号(连续的)
	[root@oldboyedu ~ ]# sed -n '1,3p' person.txt 
	101,oldboy,CEO
	102,zhaoyao,CTO
	103,Alex,COO
03:显示多行行号(不连续的)
	[root@oldboyedu ~ ]# sed -n '1p;3p' person.txt 
	101,oldboy,CEO
	103,Alex,COO

根据文件内容信息
01:输出单行信息
	[root@oldboyedu ~ ]# sed -n '/oldboy/p'  person.txt 
	101,oldboy,CEO
02:根据内容信息,输出多行内容(连续) 
	[root@oldboyedu ~ ]# sed -n '/oldboy/,/Alex/p' person.txt 
	101,oldboy,CEO
	102,zhaoyao,CTO
	103,Alex,COO
03:根据内容信息,输出多行内容(不连续)
	[root@oldboyedu ~ ]# sed -n '/oldboy/p;/Alex/p' person.txt 
	101,oldboy,CEO
	103,Alex,COO
	
2)添加信息:
在文件第一行之前添加内容     i
[root@oldboyedu ~ ]# sed  -i '1i100,oldgirl,UFO' person.txt   放到内存当中
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

在文件第二行之后添加内容   a
[root@oldboyedu ~ ]# sed -i '2a 106,oldbbb,ooo' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
106,oldbbb,ooo
103,Alex,COO
104,yy,CFO
105,feixue,CIO

$ 在结尾添加内容
[root@oldboyedu ~ ]# sed '$a 106,oldbbb,ooo' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldbbb,ooo

在oldboy前面添加oldgirl  后面添加olddgog
[root@oldboyedu ~ ]# sed -e '/oldboy/ioldgril' -e '/oldboy/aolddog' person.txt 
oldgril
101,oldboy,CEO					-e 扩展功能:可以干多件事情
olddog
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO

3)删除信息方法: d
01:删除单行;
[root@oldboyedu ~ ]# sed '4d' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
105,feixue,CIO
02:删除多行;连续的
[root@oldboyedu ~ ]# sed '1,3d' person.txt 
104,yy,CFO 
105,feixue,CIO
03:删除多行;不连续的
[root@oldboyedu ~ ]# sed '1d;3d' person.txt
注意:这样的删除只是删除缓存中的,实际上并没有删除  
如果要真的删除的话,必须加上-i 这个参数 

4)替换信息
语法格式:1:sed 's#原有内容#修改后的内容#g' 文件信息
		2:sed 's#()#\n#g' 文件信息    后项引用前项进行替换
替换IP地址:
sed -i 's#200#41#g' /etc/sysconfig/network-scripts/ifcfg-eth0


补充:****
01:修改文件内容直接进行自动备份: 会在修改之前先备份,如何进行修改

[root@oldboyedu ~ ]# sed -i.bak '/^$/p' person.txt 
[root@oldboyedu ~ ]# 
[root@oldboyedu ~ ]# ll person.txt.bak 
-rw-r--r-- 1 root root 65 4月   1 05:35 person.txt.bak
02:真实替换时:千万不要让n和i一起使用,使用的结果就是只会留下你修改的那行内容其他内容都会直接没有


另外:关于批量修改后缀名:
Centos7有专门的修改命令:rename:
语法格式:
rename  			.txt 				.jpg				jin*.txt
				要修改的后缀名			修改成什么后缀名	要修改的文件信息
				
测试结果:	
[root@oldboyedu jin ]# rename  .jpg   .txt   jin*.jpg 
[root@oldboyedu jin ]# ll
总用量 8
-rw-r--r-- 1 root root  0 4月   1 06:29 jin01.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin02.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin03.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin04.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin05.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin06.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin07.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin08.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin09.txt
-rw-r--r-- 1 root root  0 4月   1 06:29 jin10.txt
-rw-r--r-- 1 root root 73 3月  31 10:20 jin1.txt
-rw-r--r-- 1 root root 55 3月  31 10:14 jin.txt

四:三剑客–老大:awk

1)awk 擅长对列进行操作/进行数据信息的统计
2)参数:
FS        设置输入列分隔符,等价于 -F选项。默认是空格
NF        列的字段总数,$NF指当前列最后一个的值
NR        已读的记录数(当前行数)
$0        指整条记录
$1, $2, … $n   分别是第1,2,...n列的字段值
3)作用:
处理信息:
01:文本文件
02:日志文件
03:配置文件
作用特点:
01:排除信息
02:查询信息
03:统计信息
04:替换信息
4)语法格式:
语法格式:
sed 【参数】 ‘条件-处理方式’  文件
awk 【参数】 ‘模式-动作’	   文件


测试环境:读者也可以自己准备:
zhang  Dandan   41117397    :250:100:175
zhang  Xiaoyu   490230151   :152:90:201
Meng   Feixue   234512341   :250:100:89
Wu     Waiwai   4567909025  :250:100:43
Liu    Bingbin  41745674    :250:100:16
Wang   Xiaoai   2435245234  :250:100:15
Zi     Gege     23452725    :250:100:17
Li     Youjiu   41524523    :250:100:18
Lao    Nanhai   435234523   :250:100:134


5)测试:
01:按照行号查询信息
#单行
[root@oldboyedu ~ ]# awk 'NR==2' awk.txt 
zhang	Xiaoyu	490230151	:152:90:201
#多行(不连续)
[root@oldboyedu ~ ]# awk 'NR==2;NR==3' awk.txt
zhang	Xiaoyu	490230151	:152:90:201
Meng	Feixue	234512341	:250:100:89
#多行(连续)
[root@oldboyedu ~ ]# awk 'NR==2,NR==4' awk.txt 
zhang	Xiaoyu	490230151	:152:90:201
Meng	Feixue	234512341	:250:100:89
Wu	Waiwai	4567909025	:250:100:43
补充:在Linux系统中:
=:表示赋值
==:表示等于的意思


02:按照字节查询信息
#多个字节(连续) 
[root@oldboyedu ~ ]# awk '/Xiaoyu/,/Waiwai/' awk.txt 
zhang	Xiaoyu	490230151	:152:90:201
Meng	Feixue	234512341	:250:100:89
Wu		Waiwai	4567909025	:250:100:43
#多个字节(不连续)
[root@oldboyedu ~ ]# awk '/Xiaoyu/;/Waiwai/' awk.txt 
zhang	Xiaoyu	490230151	:152:90:201
Wu		Waiwai	4567909025	:250:100:43

03:显示xiaoyu的姓氏和ID    $1代表的是第一列
[root@oldboyedu ~ ]# awk '/Xiaoyu/{print $1,$3}' awk.txt
zhang 490230151

04:姓氏是zhang的人,显示他第二次捐款金额以及他的名字
[root@oldboyedu ~ ]# awk -F ":" '/zhang/{print $3}' awk.txt 
100
90

04:显示所有以41开头的ID号码人的全名和ID号码
[root@oldboyedu ~ ]# awk '$3 ~/^41/{print $1,$2,$3}' awk.txt
zhang Dandan 41117397
Liu Bingbin 41745674
Li Youjiu 41524523

05:显示所有ID号码最后一位是1或者5的人的全名
[root@oldboyedu ~ ]# awk '$3 ~/[15]$/{print $1,$2}' awk.txt |column -t
zhang  Xiaoyu
Meng   Feixue
Wu     Waiwai
Zi     Gege
补充:	column -t 是对齐的命令
    	~:按列进行匹配
    	
06:显示Xiaoyu的捐款,每个都有以$开头
gsub(/要替换的信息/,“替换成什么信息”,在哪里进行替换)
[root@oldboyedu ~ ]# awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk.txt 
$152$90$201

特殊的模式:
01:BEGIN {} 在awk执行命令前做什么事情:
[root@oldboyedu ~ ]# awk 'BEGIN{print "姓","名","ID","捐款记录"}{ print $0}' awk.txt | column -t
姓     名       ID          捐款记录
zhang  Dandan   41117397    :250:100:175

02:END{}  在awk执行命令结束后做的操作
[root@oldboyedu ~ ]# awk 'BEGIN{print "姓","名","ID","捐款记录"}{ print $0}END{ print "操作结束"}' awk.txt | column -t
姓        名       ID          捐款记录
zhang     Dandan   41117397    :250:100:175
操作结束

注意:
1:sed命令:i和n 不可一起使用,如果使用的话,就会使文件内容删除
以上就是三剑客命令的基础用法,请读者慢慢仔细阅读使用,更高级的用法,我会慢慢来学的。欢迎大佬来批评,指教,非常感谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值