01. grep — 过滤筛选文件内容信息
-A
-B
-C
-i
-c
-v
-o
-E
-n
-r
-w04. sed命令应用总结
sed命令参数总结:
-n : 取消默认输出
-e : 识别多操作指令
-r : 识别扩展正则
-i : 真正编辑修改文件内容
sed命令指令信息:
p : 输出显示指定信息
d : 删除指定信息
s : 替换指定信息
g : 全局替换信息
a : 添加指定信息在相应行的后面
i : 插入指定信息在相应行的前面
c : 将一行信息进行替换修改
- 三剑客sed命令概念介绍
作用说明: stream editor for filtering and transforming text
文件处理编辑命令
原理过程: 按照文件每行信息进行处理, 找出符合条件信息, 执行相应操作
语法结构: sed [参数] ‘条件 指令操作’ 文件信息
准备环境
cat >person.txt<<EOF
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
EOF
-
如何进行查询
a 按照行号查询信息
查找单行信息: sed -n ‘3p’ 文件信息
查找多行信息: sed -n ‘2,4p’ 文件信息 连续多行
sed -n ‘2,$p’ 文件信息
美元符号(代表最后一行) -
如何进行删除
sed -i ‘6d’ person.txt
sed -i.bak ‘/COO/d’ person.txt — 将源文件内容先进行备份, 在进行操作
(会保存在当前目录下)
sed -ri ‘/CFO|CTO/d’ person.txt
sed ‘=’ person.txt |xasgr -n2 用sed查看行号sed -i ‘6d,4d’ person.txt 删除连续行
sed -i ‘6d;5d’ person.txt 删除指定行
坑: 删除一个文件有#号的行
1) 查询需要删除内容
sed -n ‘/^#/p’ config
2) 删除文件信息
sed -i ‘/^#/p’ config
PS:
- -i参数后面不能再跟上其他参数
- -i参数和-n参数尽量不要结合使用
-i : 真正修改文件内容
-
如何进行添加
3a: 在第三行的下面添加相应信息
3i: 在第三行的上面添加相应信息[root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 105,feixue,CIO [root@linux67 oldboy]# sed -i '1a102,zhaoyao,CTO' person.txt [root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 105,feixue,CIO [root@linux67 oldboy]# sed -i '5i103,Alex,COO' person.txt [root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 105,feixue,CIO [root@linux67 oldboy]# sed -i '3i103,Alex,COO' person.txt [root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 105,feixue,CIO 添加多行: [root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 105,feixue,CIO [root@linux67 oldboy]# sed -i '2a103,Alex,COO\n104,yy,CFO' person.txt [root@linux67 oldboy]# cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 103,Alex,COO --- 插入到第2行前面 104,yy,CFO --- 插入到第3行后面 [root@linux67 oldboy]# sed -e '2i103,Alex,COO' -e '3a104,yy,CFO' person.txt 101,oldboy,CEO 103,Alex,COO 102,zhaoyao,CTO 105,feixue,CIO 104,yy,CFO -e : 表示可以识别多个操作信息
-
如何进行修改
sed 参数 ‘s#需要替换信息#替换成什么信息#g’ 文件信息
sed 'KaTeX parse error: Expected 'EOF', got '#' at position 2: s#̲CEO#CIO#g' pers…Init_IP#$Change_IP#g" $File_info — 指定变量信息做替换需要注意双引号使用练习: 如何快速修改网卡地址信息 企业网络环境发生变更 修改网卡地址 --- 修改地址脚本
脚本编写需要有逻辑性
脚本编写需要有通用性 A Windows B linux 跨平台[在这里插入图片描述
在写脚本的时候注意双引号的使用
练习题: 利用sed命令取出IP地址信息
思路1) 显示出IP地址
ip a s eth0
思路2) 有IP地址的行显示出来
# ip a s eth0|sed -n ‘3p’
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
思路3) 取出IP地址
ip a s eth0|sed -n ‘3p’|sed -r ‘s#^.et (.)#\1#g’|sed -r ‘s#(.)/24.$#\1#g’
sed -r ‘s#^.et (.)#\1#g’
sed -r ‘s#(.)/24.KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲\1#g' ip …#\1#g’
sed -n ‘3p’
sed -r ‘s#^.et (.)/24.*KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲\1#g' …#\1#gp’