1.1 流编辑器
功能:增删改查
格式:找谁干啥
1.1.1 增加 cai
c replace 替换
a append 追加
i insert 插入
[root@oldboyedu50-lnb ~]# sed '3a12306,xiao,UFO' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
12306,xiao,UFO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
12306,xiao.UFO
[root@oldboyedu50-lnb ~]# cat person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
12306,xiao.UFO
[root@oldboyedu50-lnb ~]# sed '3c12306,xiao,UFO' person.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,xiao,UFO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
12306,xiao.UFO
在文件最后一行增加
12306,xiao,UFO
12580,tao,XO
[root@oldboyedu50-lnb ~]# sed '$a12306,xiao,UFO\n12580,tao,XO' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
12306,xiao.UFO
12306,xiao,UFO
12580,tao,XO
1.1.2 修改配置文件
echo >>
cat >>oldboy.txt< EOF 追加文件最后 sudo === /etc/sudoers cron === /var/spool/cron/ 挂载 === /etc/fstab 解析主机名 === /etc/hosts 网卡配置文件 === /etc/sysconfig/network-scripts/ifcfg-eth0 #删除第2行到底5行 #删除从yy开始的行到文件结尾的内容 #删除包含lidao的行 #删除不包含lidao的行 [root@oldboyedu50-lnb ~]# sed '/lidao/!d' person.txt 110,lidao,COCO 实例1-1 企业案例:不显示文件中的空行 grep -v '^$' lidao.txt sed '/^$/d' lidao.txt awk '!/^$/' lidao.txt sed -n '/^$/!p' lidao.txt 实例1-2 不显示文件中的空行,文件中可能有空行 只包含空格的行 egrep -v '^$|^ +$' lidao.txt oldboy oldboy lidao lidao egrep -v "^$|^[ ]+$" lidao.txt echo -e 'oldboy\n\n oldboy \n \nlidao \n lidao' >lidao.txt [root@oldboyedu50-lnb ~]# sed 's#[0-9]##g' person.txt ,oldboy,CEO ,zhangyao,CTO ,Alex,COO ,yy,CFO ,feixue,CIO ,lidao,COCO ,xiao.UFO [root@oldboyedu50-lnb ~]# sed 's#[0-9]##' person.txt 01,oldboy,CEO 02,zhangyao,CTO 03,Alex,COO 04,yy,CFO 05,feixue,CIO 10,lidao,COCO 2306,xiao.UFO [root@oldboyedu50-lnb ~]# sed 's#[0-9]##g' person.txt ,oldboy,CEO ,zhangyao,CTO ,Alex,COO ,yy,CFO ,feixue,CIO ,lidao,COCO ,xiao.UFO [root@oldboyedu50-lnb ~]# ifconfig eth0 |sed -rn '2s#^.*r:(.*) Bc.*#\1#gp' 10.0.0.200 [root@oldboyedu50-lnb ~]# ifconfig eth0 |sed -rn '2s#^.*r:(.*) Bc.*#\1#gp' 10.0.0.200 [root@oldboyedu50-lnb ~]# ifconfig eth0 |awk -F'[ :]+' 'NR==2{print $4}' 10.0.0.200 [root@oldboyedu50-lnb ~]# ifconfig eth0 |awk -F'addr:| Bc' 'NR==2{print $2}' 10.0.0.200 [root@oldboyedu50-lnb ~]# ifconfig eth0 |awk -F'[^0-9.]+' 'NR==2{print $2}' 10.0.0.200 实例1-3 把文件person.txt文件中的每一行的内容 替换为对应的行号 101,oldboy,CEO 102,zhangyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 110,lidao,COCO 12306,xiao.UFO 1 2 3 4 5 6 7 实例1-4 批量重命名:删除文件名中的html_ touch oldboy_html_{01..10}.jpg 方法1:sed 拼接 mv oldboy_html_01.jpg oldboy_01.jpg 方法2:for循环 for name in `ls /oldboy/name` do mv $name `echo $name |sed 's#html_##g'` done 方法3:命令 rename rename oldboy oldgirl *.jpg 实例1-5 find命令找出包含特殊符号文件名案例 [root@oldboyedu50-lnb /oldboy/name]# find /oldboy -type f -name "*.jpg" -print0 |xargs -0 ls -l -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 01.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 02.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 03.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 04.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 05.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 06.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 07.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 08.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 09.jpg -rw-r--r-- 1 root root 0 Aug 21 11:03 /oldboy/name/oldgirl_ 10.jpg gnu awk gawk -F -v 定义变量 awk -F: 'NR==1{print $1,$3}' /etc/passwd '条件 {动作}' pattern {命令} 模式 实例1-6 调换/etc/passwd第1列和最后一列内容 #awk内置变量(shell 环境变量) #NR 行号 number of record #NF 每行有多少列 number of filed #FS 指定的分隔符 -F: ==== -vFS=: #$1 $2 第1列 第2列 #$0 一整行的内容 #OFS output 输出分隔符 显示每一列的时候 每一列之间通过什么分开 [root@oldboyedu50-lnb /oldboy]# awk -F: -vOFS=: '{print $NF,$2,$3,$4,$5,$6,$1}' passwd.txt /bin/bash:x:0:0:hahaha:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail /sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp [root@oldboyedu50-lnb /oldboy]# awk -F: -vOFS=: '{tmp=$1;$1=$NF;$NF=tmp;print}' passwd.txt /bin/bash:x:0:0:hahaha:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail /sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp1.1.3 sed命令 删除 d
1.1.4 替换 s substitute
1.1.5 后向引用
1.2 取ip地址
1.3 awk 模式匹配与处理语言