sed命令常见用法

Posted 梦想远航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed命令常见用法相关的知识,希望对你有一定的参考价值。

sed -n \'num1p\' file 选出行号为num1的行
sed -n \'num1,num2p\' file 选出num1~num2行
sed -n \'num1,$p\' file 选出num1行到文件末尾
grep -n \'.*\' file |sed \'num1p\' -n 带行号的显示
sed  \'/root/p\' -n pp.txt 查找带root的行
/ /之间和grep 一样 有些正则 需加 -r 参数 类似 grep的 -E
-e 多个表达式 或的关系
sed -e \'/pattern1/p\' -e \'/pattern2/p\' -n
或者
sed \'/pattern1/p;/pattern2/p\' -n
sed \'1,5d\' 筛选除了1,5行的
cat -n pp.txt |sed -r \'/mysql|root/d\' 筛选出不含有 mysql或者 root的 行
sed \'s/str1/str2/\' file 在file里把 str1替换成str2 查找显示
sed \'num1,num2s/str1/str2/\' file 在file的num1~num2把 str替换成str2
大小写转换
sed \'s/[a-z]/\\u&/g\' 1.txt         u ->upper
sed \'s/[A-Z]/\\l&/g\' 1.txt         l ->lower
-i 修改了重定向至文件

[root@bogon ~]# cat -n pp.txt 
     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
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:#operator:/root:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    14  avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    15  dbus:x:81:81:System message bus:/:/sbin/nologin
    16  polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    17  abrt:x:173:173::/etc/abrt:/sbin/nologin
    18  sssd:x:998:997:User for sssd:/:/sbin/nologin
    19  colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
    20  ntp:x:38:38::/etc/ntp:/sbin/nologin
View Code

sed \'2p\' pp.txt

[root@bogon ~]# sed \'2p\' pp.txt 
root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:#operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sssd:x:998:997:User for sssd:/:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
View Code

sed -n \'2p\' pp.txt

 

[root@bogon ~]# sed -n \'2p\' pp.txt 
#bin:x:1:1:bin:/bin:/sbin/nologin

 

sed不具有显示行号功能 配合grep
grep -n \'.*\' pp.txt |sed \'2p\' -n

[root@bogon ~]# grep -n \'.*\' pp.txt |sed \'2p\' -n
2:#bin:x:1:1:bin:/bin:/sbin/nologin
[root@bogon ~]# grep -n \'.*\' pp.txt |sed \'2,5p\' -n
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
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
View Code

grep -n \'.*\' pp.txt|sed  -n \'5,$p\'

[root@bogon ~]# grep -n \'.*\' pp.txt|sed  -n \'5,$p\'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:#operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:abrt:x:173:173::/etc/abrt:/sbin/nologin
18:sssd:x:998:997:User for sssd:/:/sbin/nologin
19:colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
20:ntp:x:38:38::/etc/ntp:/sbin/nologin
View Code

grep -n \'.*\' pp.txt |sed \'/root/p\' -n

[root@bogon ~]# grep -n \'.*\' pp.txt |sed \'/root/p\' -n
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:#operator:/root:/sbin/nologin
[root@bogon ~]# cat 1.txt 
rt
rot
root
ro t
[root@bogon ~]# sed \'/ro{1,}t/p\' -n -E 1.txt 
rot
root

查找含有 root或者ftp的行
grep \'.*\' -n pp.txt |sed -e \'/root/p\' -e \'/ftp/p\' -n

[root@bogon ~]# grep \'.*\' -n pp.txt |sed -e \'/root/p\' -e \'/ftp/p\' -n
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:#operator:/root:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@bogon ~]# cat 1.txt 
php
php js
js
python
[root@bogon ~]# sed -e \'/php/p\' -e \'/js/p\' -n 1.txt 
php
php js
php js
js
[root@bogon ~]# sed -e \'/php/p\' -e \'/js/p\'  1.txt 
php
php
php js
php js
php js
js
js
python
[root@bogon ~]# sed  \'/php/p;/js/p\'  1.txt -n
php
php js
php js
js
View Code

cat -n pp.txt |sed \'1,5d\'

 

[root@bogon ~]# cat -n pp.txt |sed \'1,5d\'
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:#operator:/root:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    14  avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    15  dbus:x:81:81:System message bus:/:/sbin/nologin
    16  polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    17  abrt:x:173:173::/etc/abrt:/sbin/nologin
    18  sssd:x:998:997:User for sssd:/:/sbin/nologin
    19  colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
    20  ntp:x:38:38::/etc/ntp:/sbin/nologin
View Code

 

不看#开头的注释
cat pp.txt |sed \'/^#/d\'

sed \'s/php/python/\' 1.txt
sed \'1,3s/php/python/\' 1.txt

[root@bogon ~]# cat 1.txt 
11111111
123php456
123456js
123456php
[root@bogon ~]# sed \'s/php/python/\' 1.txt 
11111111
123python456
123456js
123456python
[root@bogon ~]# sed \'1,3s/php/python/\' 1.txt 
11111111
123python456
123456js
123456php

如果字符串里有/,可使用别的分隔符

/mnt/hgfs/ 替换为 /usr/local/nginx/html

sed \'s#/mnt/hgfs/#/usr/local/nginx/html/#\' www.conf>www.conf

 

大小写转换
小写转大写
sed \'s/[a-z]/\\u&/g\' 1.txt
sed \'s/[A-Z]/\\l&/g\' 1.txt

[root@bogon ~]# cat 1.txt 
11111111
123php456
123456js
123456pHp

[root@bogon ~]# sed \'s/[a-z]/\\u&/\' 1.txt 
11111111
123Php456
123456Js
123456PHp
[root@bogon ~]# sed \'s/[a-z]/\\u&/g\' 1.txt 
11111111
123PHP456
123456JS
123456PHP
[root@bogon ~]# sed \'s/[A-Z]/\\l&/g\' 1.txt 
11111111
123php456
123456js
123456php
View Code

字符串位置替换

[root@bogon ~]# cat 1.txt 
a:b:c:d
a1:b1:c1:d1
a2:b2:c2:d2
a_: :c:dddd
[root@bogon ~]# sed -r \'s/([^:]+)(:.*:)([^:]+$)/\\3\\2\\1/\' 1.txt
d:b:c:a
d1:b1:c1:a1
d2:b2:c2:a2
dddd: :c:a_

 

以上是关于sed命令常见用法的主要内容,如果未能解决你的问题,请参考以下文章

Linux下shell命令用法及常见用例: sed

sed常见用法总结

sed应用

sed多行文本处理

linux sed 用法

sed