sed详解+cut

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_41729148/article/details/89106796

sed介绍

sed是一种流编辑器,一行一行的处理文件内容,正在处理的内容存放在缓冲区中,然后按照选项进行输出。
执行过程:
1一次读取一行数据
2根据我们提供的规则来匹配相关的数据
3按照命令进行修改流中的数据
4结果输出
5重复以上的步骤
sed选项:ani(记住)
-a 在当前行下面插入文件
-n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令
-i 编辑文件内容
-e 执行多个sed指令
-f 运行脚本
-i.bak 编辑的同时创建.bak的备份
-r 使用扩展的正则表达式
命令:icpdws(牢记)
i:在当前行的上面插入文件
c:将选定的行改为新的指定的文本
p:打印
d:删除
w:另存
s:查找
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g  获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面	
D	删除\n之前的内容
P	打印\n之前的内容
sed替换标记:
数字:表明新的文本将替换第几处模式匹配的地方
g:替换所有
\1:子串匹配的标记

下面是一些sed命令的例子

s用来替换匹配到的第一个字符

[root@break ~]# 
[root@break ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@break ~]# sed 's/root/du/' /etc/passwd | head -1
du:x:0:0:root:/root:/bin/bash

全面替换标记g

[root@break ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@break ~]# sed 's/root/du/g' /etc/passwd | head -1
du:x:0:0:du:/du:/bin/bash

改变定界符,从/变成#

[root@break ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@break ~]# sed 's#/bin/bash#/bin/nologin#' /etc/passwd | head -1
root:x:0:0:root:/root:/bin/nologin
[root@break ~]# sed 's/\/bin\/bash/\/bin\/nologin/' /etc/passwd | head -2
qqqq
root:x:0:0:root:/root:/bin/nologin

按照行进行查找和替换,第二行内容的替换

[root@break ~]# sed '2s/bin/du/' /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
du:x:1:1:bin:/bin:/sbin/nologin
[root@break ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

多行替换,从第二行到最后一行

[root@break ~]# sed '2,$s/x/ssss/' /etc/passwd | head -3
root:x:0:0:root:/root:/bin/bash
bin:ssss:1:1:bin:/bin:/sbin/nologin
daemon:ssss:2:2:daemon:/sbin:/sbin/nologin
[root@break ~]# head  -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

删除2到4行的内容

[root@break ~]# sed '2,4d' /etc/passwd | head -3
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@break ~]# head  -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

删除包括x的所有行

[root@break ~]# sed '/s/d' /etc/passwd 
qqqq
[root@break ~]# head -2 /etc/passwd
qqqq
root:x:0:0:root:/root:/bin/bash

行前插入

[root@break ~]# echo "world" | sed 'i\hello'
hello
world

行后插入

[root@break ~]# echo "world" | sed 'a\hello'
world
hello

文末追加内容

[root@break ~]# sed '$a\nihao' a.txt
hello world
/root
nihao

文中插入内容

[root@break ~]# sed '1,2a\nihao' a.txt
hello world
nihao
/root
nihao
[root@break ~]# cat a.txt 
hello world
/root

中间内容的修改

[root@break ~]# sed '2,$c\nihao' a.txt
hello world
nihao
[root@break ~]# cat a.txt 
hello world
/root

文档结尾内容的修改

[root@break ~]# sed '2,$c\192.169.1.1' a.txt 
hello world
192.169.1.1

打印并直接输出文档的内容

[root@break ~]# sed -n '/root/w a.txt' /etc/passwd
[root@break ~]# cat a.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

对原文件进行修改

[root@break ~]# cat a.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@break ~]# sed -i 's/root/du/' a.txt
[root@break ~]# cat a.txt
du:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/du:/sbin/nologin
[root@break ~]# sed -i 's/IPADDR=192.168.1.63/IPADDR=192.168.1.64/' /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@break ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8852230c-17a0-4eb6-bad7-9efa9606080f
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.64
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
IPV6_PRIVACY=no

cut

-b:仅显示行中指定范围的字节数;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
N-:从第N个字节、字符、字段到结尾;
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
[root@break ~]# cut -c1-5 /etc/passwd | head -5
qqqq
root:
bin:x
daemo
adm:x
[root@break ~]# cut -c-3 /etc/passwd | head -5
qqq
roo
bin
dae
adm
[root@break ~]# cut -c3- /etc/passwd | head -5
qq
ot:x:0:0:root:/root:/bin/bash
n:x:1:1:bin:/bin:/sbin/nologin
emon:x:2:2:daemon:/sbin:/sbin/nologin
m:x:3:4:adm:/var/adm:/sbin/nologin

猜你喜欢

转载自blog.csdn.net/qq_41729148/article/details/89106796