linuxsed命令详解

linuxsed命令详解1、定位
定位⼀⾏
x:⾏号
sed -n '10p' passwd
nl passwd | sed -n '10p'
/pattern/:正则
sed -n '/abc/p' passwd
[root@idtp4 test]# nl -ba passwd |sed -n '/root/p'
1  root:x:0:0:root:/root:/bin/bash
11  operator:x:11:0:operator:/root:/sbin/nologin
[root@idtp4 test]#
定位⼏⾏
x,y:⾏号
nl passed | sed -n '10,20p'
/pattern/,x:正则
sed -n '/mail/,/abc/p' passwd
x,y!:不选择这⼀⾏
nl passwd |sed -n '10!p'
nl passwd | sed -n '10,20!p'
间隔⼏⾏
first~step
first:开始⾏
step:步进
nl passwd | sed -n '1~2p'
⼆、基本操作命令
-a(追加⾏)/i(插⼊⾏)
-c(替代⾏)
-d(删除⾏)
频率元件$a:在⽂件末尾追加内容
纹眉机#在环境变量末尾追加内容
#\n为换⾏
[root@idtp4 test]# sed -i '$a export LRX_HOME=\nexport path='  profile
[root@idtp4 test]# tail -5f profile
export PATH=$PATH:$ACCUMULO_HOME/bin
export ANT_HOME=/software/apache-ant-1.9.13/bootstrap
export PATH=$PATH:$ANT_HOME/bin
export LRX_HOME=
export path=
如果想在添加的内容开头加空格,就要在$a后加⼊转义符“\”。
#添加空格对齐采访麦克风
[root@idtp4 test]# sed -i '$a\  export LRX_HOME\nexport path' profile
[root@idtp4 test]# tail -5f profile
export PATH=$PATH:$ACCUMULO_HOME/bin
export ANT_HOME=/software/apache-ant-1.9.13/bootstrap
export PATH=$PATH:$ANT_HOME/bin
export LRX_HOME
export path
三、常⽤命令
删除空⾏
sed'/^$/d'  filename
替换操作
s
分隔符:/
全局替换:g
sed's/nologin/login/'passwd
sed's/:/%/g'passwd
打印时⽤-n 和p。
替换时⽤s 和g(全局)。
转换⼤⼩写
\u \l:对⾸字母转⼤写、⼩写
\U \L:对⼀串字符转⼤写、⼩写
sed's/^[a-z-_]\+/\u&/'passwd
微晶钢#将⽂件夹下的.txt⽂件名转换为⼤写
ls *.txt | sed's/^\w\+/\U&/'
其中,&表⽰替换前的全部内容。
[root@idtp4 test]# ls |sed's/.*/\u&/'
<
<
Access_log
Passwd
Profile
<
[root@idtp4 test]# ls |sed's/.*/\U&/'
123.TXT
ABC.TXT
ACCESS_LOG
PASSWD
PROFILE
TEST.TXT
[root@idtp4 test]# ls |sed's/.*/\l&/'
<
<
access_log
passwd
profile
<
四、括号
()
括号代表指代内容,可以⽤1,2指代括号⾥的内容。
括号要转义,前⾯要加\转义符。
⽂件⾥有:w1w2w3的内容,要取w2,可以写为:
sed's/w1\(w2\)w3/\1/'
结果为w2。
# 取到第⼀个ip
[root@idtp4 test]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 172.17.166.190  netmask 255.255.240.0  broadcast 172.17.175.255
ether 00:16:3e:0e:a4:48  txqueuelen 1000  (Ethernet)
[root@idtp4 test]# ifconfig|sed -n '/inet.*bro/p' |sed's/inet\+\s\([0-9\.]\+\).\snet.*$/\1/'
172.17.166.190
也可以写成:
# 取到第⼀个ip
[root@idtp4 test]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 172.17.166.190  netmask 255.255.240.0  broadcast 172.17.175.255
ether 00:16:3e:0e:a4:48  txqueuelen 1000  (Ethernet)
[root@idtp4 test]# ifconfig|sed -n '/inet.*bro/p'|sed's/inet.*\s\([0-9\.]\+\).*netmask.*\s\([0-9\.]\+\).*broadcast.*\s\([0-9\.]\)/\3/' 172.17.175.255
[ ]
表⽰从⾥⾯取任意值。
#0到9中任意的值,包含点,点需要转义
[0-9\.]
#a到z的任意值,包含-,以括号⾥⾯的值开头,a到z是连续的,连续的⽤短线连接,结束连续后⾯要先接下划线,再接短线^[a-z_-]
+:表⽰1个以上。
^:表⽰开头。
$:表⽰结束。
&:表⽰替换前的全部内容。
{}:同时执⾏多个sed命令。
#取passwd⾥的⽤户名,uid,gid
[root@idtp4 test]# sed's/\([a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/\1,\2,\3/'passwd
root,0,0
bin,1,1
daemon,2,2
五、r和w
r:读,不会改变⽂件内容
w:写,会改变⽂件内容,覆盖写
[root@idtp4 test]#
123
456
789
[root@idtp4 test]#
abc
qwe
sd
#将读取内容,并加⼊到的第⼀⾏后⾯,不改变⽂件内容
[root@idtp4 test]# sed''
abc
123
456
789
qwe
sd
[root@idtp4 test]#
123
456
789
[root@idtp4 test]#
abc
qwe
sd
[root@idtp4 test]#
123
456
789
[root@idtp4 test]#
abc
qwe
sd
#将的第⼀⾏写⼊到⾥,覆盖写
[root@idtp4 test]# sed''
abc
qwe
sd
[root@idtp4 test]#
abc
[root@idtp4 test]#
abc
qwe
sd
q:退出
#打印到第10⾏,退出
[root@idtp4 test]# nl -ba passwd |sed'10q'
1  root:x:0:0:root:/root:/bin/bash
2  bin:x:1:1:bin:/bin:/sbin/nologin
3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
4  adm:x:3:4:adm:/var/adm:/sbin/nologin
5lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6
7sync:x:5:0:sync:/sbin:/bin/sync
8  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9  halt:x:7:0:halt:/sbin:/sbin/halt
10  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin [root@idtp4 test]#
六、命令⾏格式
-i:修改⽂件内容
agv驱动器-n:忽略默认输出
[root@idtp4 test]# nl -ba passwd|sed -n '10p'
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
冷轧辊
[root@idtp4 test]#
-
e:跟{}⼀样,可以同时写⼊多个命令
#删除2到3⾏,同时将冒号替换为%号
[root@idtp4 test]# nl -ba passwd |sed -e '10,20d' -e 's/:/%/g'
1  root%x%0%0%root%/root%/bin/bash
4  bin%x%1%1%bin%/bin%/sbin/nologin
5  daemon%x%2%2%daemon%/sbin%/sbin/nologin
6  adm%x%3%4%adm%/var/adm%/sbin/nologin
7lp%x%4%7%lp%/var/spool/lpd%/sbin/nologin [root@idtp4 test]#
七、脚本格式
sed -f scriptfile file

本文发布于:2024-09-21 19:35:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/149138.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内容   替换   命令
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议