linux 常用命令sed

本文详细介绍了sed命令的基本用法及各种应用场景,包括删除、显示、插入、替换行或内容等操作,并提供了丰富的实例。

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作

sed用法

      sed [-nefri] "定位符指令" 文件名     

常用选项:

        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑(可同时执行多个操作);
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。    

常用命令:

        a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
        c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
        i  :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p :列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s  :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g  
        w :将文件内容导入到其他文件
        r:将其他文件的内容导入

          

案例 

      1.删除  

sed '1d'  passwd  #删除第一行
sed '1,2d' passwd #删除前二行
sed '$d'   passwd #删除最后一行
sed '2,$d' passed #删除第二行到最后一行 

      2.显示某行 

sed -n '1p' /etc/passwd #查看第一行并打印
sed -n '2,$p' /etc/passwd #查看第二行到最后一行
sed -n '$=' /etc/passwd  #总共多少行内容
sed -n '/^root/=' /etc/passwd #以root开头的行位于第几行
sed -n '1~2p' /etc/passwd  #打印奇数行
sed -n '2~2p' /etc/passwd  #打印偶数行
sed -n '2,+3p' /etc/passwd #打印第二行以及其后3行

    3.插入

sed '1a fuck you' /etc/passwd #第一行后插入fuck you
sed '1,3a hello' /etc/passwd  #第一行到第三行后加hello
sed '1,3i shit' /etc/passwd   #第一行到第三行前插入shit
sed '1~2i sb' /etc/passwd #奇数行前插入sb

  4.替换

sed '1c son of bitch' /etc/passwd #第一行替换成son of bitch
sed '1,3s/hello/faker/' /etc/passwd #第一行到第三行中的第一个hello替换成faker
sed '1,3s/hello/faker/g' /etc/passwd第一行到第三行所有的hello替换成faker
sed 's/hello/faker/g' /etc/passwd有的hello替换成faker
sed -ri '3,9s/(.*)/#\1/g' passwd # 正则表达式3,9行注释 主要是由特殊字符1不用-r语法错误

  5.read 将其他文件的内容导入

sed '2r /etc/hosts' /etc/passwd #将/etc/hosts 读取到passwd 第二行下面
sed 'r /etc/hosts' /etc/passwd #将/etc/hosts  读取到passwd每一行下面
sed '/root/r 1.txt' /etc/passwd #查找/etc/passwd 含有root的行,然后每行导入1.txt

 6.write 将文件内容导出另存到其他文件

sed 'w 1.txt' /etc/passwd #将/etc/passwd 内容导入到1.txt
sed '/127.0.0.1/w 1.txt' /etc/hosts #将/etc/hosts 含有127.0.0.1的行导入到1.txt
sed '2,3w 1.txt' /etc/passwd #将 /etc/passwd第二行到第三行导入到1.txt

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值