Linux之sed命令

1.sed命令的原理过程

按照文件每行信息进行处理,找出符合条件的信息,执行相应操作;

  • 找什么信息,做什么事情;
  • 一行一行的进行查找操作
  • 找到要处理的信息进行处理操作
  • 操作时会有默认输出,-n 参数可以取消默认输出;

 

2.sed命令参数详解

-n      #取消默认显示
-i    # 修改文件
-i.bak  # 先备份,再修改   #-i和-n不能同时使用
-r      #表示扩展正则匹配
-e    #多个操作接在一起操作
s #替换 p #打印输出 a #在匹配行后一行增加内容 i #在匹配行前一行增加内容
c   #替换匹配的这一行
d   #删除
g   #表示全局global
&   #调用前面的正则匹配
=   #打印文件行号
N   #将当前读入行的下一行读取到当前的模式空间,即同时执行两行; 

 

3.sed命令练习操作

(1)替换dks.txt文本中old为new
sed -i 's#old#new#g' dks.txt

 

(2)打印dks.txt文本第一行至第三行
sed -n '1,3p' dks.txt
 
(3)打印dks.txt文本中第一行与最后一行
sed -n '1p;$p' dks.txt
 
(4)删除 dks.txt 第一行至第三行
sed '1,3d' dks.txt

 

(5)删除‘匹配到的行’至最后一行
sed '/匹配内容/,$d' dks.txt

 

(6)删除 dks.txt 最后 6 行及删除最后一行
for i in `seq 1 6`;do echo $i; sed -i '$d' dks.txt ;echo "-----" ; done

 

(7)在 dks.txt 文件中查找 dks 所在行,并将其上一行添加 word 字符
sed -i '#dks#iword' dks.txt

 

(8)在 dks.txt 文件中查找 dks 所在行,并在其下一行添加 word 字符
sed -i '#dks#aword' dks.txt

 

(9)在 dks.txt 文件中,查找以 test 结尾的行,并在行尾添加字符串 word
sed 's#test$#&word#g' dks.tx

 

(10)在 dks.txt 文件中,查找 test 所在的行,并在其行首添加字符串 word
sed '#test#s#^#&word#g' dks.txt

 

(11)多个 sed 命令组合,使用-e 参数
sed -i -e '/www/s/^/&1./' -e 's/www$/&./g' dks.txt

 

(12)多个 sed 命令组合,使用分号“;”分割
sed -i -e '/test/s/^/&1/ ; s/test$/&./g' dks.txt

 

(13)sed 读取系统变量,变量替换
Test=123
sed "s/test/$Test/g" dks.txt

 

(14)修改 selinux 策略 enforcing 为 disabled,查找/SELINUX/行,然后将其 enforcing值改成 disabled ; !s 表示不替换前面的匹配行
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config

 

(15)合并上下两行,即两行合并;参数 N 可以同时处理两行;
sed -n 'N;s/\n/ /p' dks.txt

 

(16)使用 sed 命令先备份后修改
sed -i.bak '3,5d' test.txt

 

(17)在第 2 行之前,在第 3 行之后插入
sed -i -e '2i123' -e '3a123' test.txt

 

(18)通过后项引用取 IP 地址
ifconfig eth0|sed -nr '2s#^.*inet (.*) .*netmask.*$#\1#gp'

 

19)合并所有行

cat num.txt|sed ':a;N;s/\n/ /;ba;' 
posted @ 2019-11-05 15:17  IMSCZ  阅读(548)  评论(0编辑  收藏  举报