sed
#sed 还有高级模式 就是保持空间的 hold space
sed 编辑文件内容
###注,sed不能修改软连接文件,改了之后,软连接和源文件不同步
默认不修改文件内容,打开时会把内容加载到内存空间
###注sed ni 会清空内容
动作
d 删除
!d 删除其他
p 显示
-n p 显示配置-n使用
a 追加
i 插入
c 替换
= 行号
r 添加文件内容
w 另存为
s g整行替换
option
-n 不显示模式空间的内容配合p使用
-i 修改源文件
-i.bak 修改源文件并且备份.bak 后缀文件
-r 使用扩展正则表达式
-e 写多个条件
-f 把命令写在文件里,调用执行
--follow-symlinks 修改软连接文件
分组
(abc)
反向引用
\1
\2
\3
引用第几组
[root@111 ~]# cat /etc/passwd | grep "user1:x:\(1010\):\1"
user1:x:1010:1010::/home/user1:/bin/bash
如果要修改需要 -i 的option
字符分组 \{abc\}\{2\}
sed [option] scripts file1 file2
sed [option] 'addressconmmand' file1
address
1,100
1,$
3,10
3
$
5,+2
/root/,+2
/正则表达式/
/正则表达式1/,/正则表达式2/ 范围
sed -i '1,24500d' index.html
sed -i '/^hi/d' index.html
sed 's/原字符串/替换字符串/g; s/原字符串/替换字符串/g'
sed '/^\//d' /etc/fstab
sed '$a\hello' /etc/fstab
sed '$a \hello\nhaha' /etc/fstab 追加两行
sed '1i \hello\nhaha' /etc/fstab 第一行插入
sed '1c \hehe' /etc/fstab 替换第一行
sed '/^#Port 22/c\Port 8888' sshd_config
sed -n '$=' /etc/fstab
sed '$r /etc/passwd' /etc/fstab
sed '/^#/w /tmp/sed' /etc/fstab
sed 's/old/new/g' /etc/fstab old可以用正则表达式
sed '1,$s/etc/tmp/' /etc/fstab
sed 's|\(l..e\)|\1r|g'/tmp/1.txt sed 's|l..e|&r|g'/tmp/1.txt
sed -e 's/old/new/g' -e'1c \hehe' /etc/fstab
sed -f /tmp/2.txt /etc/fstab
sed --follow-symlinks -i '/^\//d' /etc/fstab
sed '1~2d' 删除奇数行
sed '2~2d' 删除偶数行
############################################################
[root@wang tmp]# cat 1 | sed 's/haha/xiao/' > 11
[root@wang tmp]# cat 11
xiao
hehe
heihei
############################################################
[root@pxe7 Packages]# ls | awk -F. '{print $(NF-1)}' | sort | uniq -c
1348 noarch
1 TRANS
2546 x86_64
############################################################
列出内核包
[root@pxe7 Packages]# ls | sed -nr 's/(.*)\.(.*)\.rpm$/\2/p'
[root@pxe7 Packages]# ls | sed -n 's/\(.*\)\.\(.*\)\.rpm$/\2/p'
############################################################
[root@bogon htdocs]# sed -ri 's@(^.*<h1>)(.*)(</h1>.*)@\1haha\3@' index.html
[root@bogon htdocs]# cat index.html
<html><body><h1>haha</h1></body></html>
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's/^(.*[0-9.]+)\.[[:alpha:]]+.*$/\1/p'
apache-tomcat-8.5.55 后项引用
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's/^(.*[0-9.]+)(\.)([[:alpha:]]+.*)$/\1/p'
apache-tomcat-8.5.55
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's/^(.*[0-9.])(\.)([[:alpha:]]+.*)$/\1/p'
apache-tomcat-8.5.55
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's/.*\.([^.]+)/\1/p'
gz
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's@^(.*[0-9.]+)\.*([^.]+)@\2@p'
gz
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's@^([^0-9.]+)([0-9.]+)\.(.*)@\2@p'
8.5.55
############################################################
[root@wang tmp]# echo apache-tomcat-8.5.55.tar.gz | sed -rn 's@^([^0-9.]+)([0-9.]+)\.(.*)\.(.*)@\3@p'
tar
############################################################
[root@wsb tmp]# sed -n '2,$p ' 1
2
3
4
5
6
7
8
9
############################################################
[root@rocky tmp]# sed -n '/[1]\+/p' 123
1111
############################################################
[root@rocky tmp]# sed -ri '/\/dev\/mapper\/vg00\-lv00\_swap/s@(.*)0$@\1test@' fstab
[root@rocky tmp]# cat fstab
/dev/mapper/vg00-lv00_root / xfs defaults 0 0
UUID=3fbe8df6-5f14-419a-932a-c353e38da37d /boot xfs defaults 0 0
/dev/mapper/vg00-lv00_swap none swap defaults 0 test
[root@rocky tmp]#
############################################################
截取分区利用率
[root@rocky ~]# df -TH| grep '^/dev' | sed -rn 's/.*[GM] ([0-9]{1,3}%).*/\1/p'
13%
83%
############################################################
[root@rocky lib]# ifconfig ens160 | sed -nr -e '2s/^.*inet//p;s/netmask.*/root/p'
192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255
192.168.1.20 root
gzip 压缩
gzip -k 压缩保留源文件
gunzip 解压
gzip -d 解压
bzip2 压缩
bzip2 -d 解压
bunzip2 解压
xz 压缩
xz -d 解压
xunz 解压
tar zcvf 目标.tar.gz 源文件
tar -tvf 123.tar.gz 查看包
split 文件切割
locate
事先把磁盘文件信息创建索引数据库 /var/lib/mlocate/mlocate.db
更新索引 updatedb
-i 不区分大小写
-r 支持正则表达式