资讯专栏INFORMATION COLUMN

Linux命令之sed

henry14 / 579人阅读

摘要:在一般的用法中,所有来自的数据一般都会被列出到终端上。直接在命令列模式上进行的动作编辑直接将的动作写在一个文件内,则可以运行内的动作的动作支持的是延伸型正规表示法的语法。

sed使用参数
[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

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

将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!

[root@www ~]# nl /etc/passwd | sed "2,5d"
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

# sed 的动作为 "2,5d" ,那个 d 就是删除!因为2-5行给他删除了,所以显示的数据就没有2-5行。
# 同时也要注意的是,sed后面接的动作,请务必以 "" 两个单引号括住!

在第一行之前加入一行 "drink tea" sed -i "1i drink tea" file.txt
在第一行之后加入一行 "drink tea" sed -i "1a drink tea" file.txt

在n行之前加入一行 "drink tea" sed -i "ni drink tea" file.txt
在n行之后加入一行 "drink tea" sed -i "na drink tea" file.txt

在文件末尾添加一行 "drink tea" echo "drink tea" >> file.txt

如果是要增加两行以上

nl /etc/passwd | sed "2a Drink tea 
> drink beer"
以行为单位的替换/显示

将第2-5行的内容替换成『No 2-5 number』 nl /etc/passwd | sed "2,5c No 2-5 number"

仅列出 /etc/passwd 文件内的第5-7行 nl /etc/passwd | sed -n "5,7p"
仅列出 /etc/passwd 文件内的第5行 nl /etc/passwd | sed -n "5p"

数据的搜寻并显示

搜索 /etc/passwd有root关键字的行 nl /etc/passwd | sed -n "/root/p"
删除/etc/passwd所有包含root的行,其他行输出 nl /etc/passwd | sed "/root/d"

数据的搜寻并替换

sed "s/要被取代的字串/新的字串/g"

提取本机IP /sbin/ifconfig eth0 | grep "inet addr" | sed "s/^.*addr://g" | sed "s/Bcast.*$//g"

直接修改文件内容,sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向

替换文件夹下的所有文件 sed -i "s/Toggle Navigation//g" ls ./ | grep html

查找并替换文件中的内容: sed -i "s/soft/services/g" /etc/profile



欢迎订阅「K叔区块链」 - 专注于区块链技术学习

博客地址:http://www.jouypub.com
简书主页:https://www.jianshu.com/u/756c9c8ae984
segmentfault主页:https://segmentfault.com/blog/jouypub
腾讯云主页:https://cloud.tencent.com/developer/column/72548

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33526.html

相关文章

  • Linux生产环境上,最常用的一套“Sed“技巧

    摘要:替换模式以上是命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。看两个命令的语法好玩由于正则的关系,很多字符需要转义。注意前半部分的范围是不能使用这种方式的。sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进...

    Big_fat_cat 评论0 收藏0
  • Linux生产环境上,最常用的一套“Sed“技巧

    摘要:命令应用广泛,使用简单,是快速文本处理的利器。范围表示找到文件中行的内容。最常用的,比如下面这个。常用的就是精确替换。表示将输出的每一行,执行一个命令。注意前半部分的范围是不能使用这种方式的。这是非常危险的。sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一...

    hlcfan 评论0 收藏0
  • linux文本处理三剑客sed,原来只需要掌握这些!!!

    摘要:流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。同样达到了对文本处理的效果。编辑器会将该命令作用到包含指定文本模式的行上。插入和附加文本和其他编辑器类似,编辑器允许向数据流插入和附加文本行。  前言: shell脚本最常见的一个用途就是处理文本文件。检查日志文件、...

    gnehc 评论0 收藏0
  • Linux命令grep/sed/awk等行转列

    摘要:行转列样例文件如下此命令在上执行正常,在上执行无效,原因是因为上的是版本,上的是版本,在上需要使用同上上正常,上无效上正常,上无效列转行样例文件如下欢迎订阅叔区块链专注于区块链技术学习博客地址简书主页主页腾讯云主页 行转列样例文件如下 cat file.txt a b c d e f g h i 1、cat file.txt |xargs -n1 2、xargs -n 1 < file...

    everfly 评论0 收藏0
  • linux基础命令介绍十:文本流编辑 sed

    摘要:与不同,是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过处理后输出。只有被命令作用的字符串才会被输出。表示从中读取命令表示原地修改。表示如果替换成功,则输出模式空间内容至文件中。和表示匹配时不区分大小写。 与vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过sed处理后输出。 sed [OPTION]... [script] [file]...

    flybywind 评论0 收藏0

发表评论

0条评论

henry14

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<