Linux sed 命令详解

Sed: stream editor 

正则替换命令(search-and-replace)

参考资料:
https://en.wikipedia.org/wiki/Sed
http://www.gnu.org/software/sed/manual/sed.html

sed 's/regexp/replacement/g' inputFileName > outputFileName

选项与参数:
regexp:search pattern,可以理解为需要找到的内容,可以使用多种正则表达式;
replacement:

wiki上举了几个例子:

No.1

sed -r "s/(cat|dog)s?/\1s/g",表示e把所有的"cat"或"dog"替换成"cats"或"dogs",而不需要复制现成的"s": 
(cat|dog) 是第一个(1st and only)regexp保存的子表达式,这里,这个子表达式(cat|dog)格式替换到表达式(\1s)中。

No.2

sed '/^ *$/d' inputFileName
符号caret (^) 表示一行的开始,符号($) 表示一行的结尾,星号 (*) 表示前一个字符(这里是空格)的一次或多次出现。
这句话的意思,就是使用/d指令删除空白或是只有空格的行。

No.3

$ echo xyz xyz | sed 's/x/y/g' (输出xyz xyz,然后sed把x替换成y)
yyz yyz

前面的命令的大致解释
-n:使用安静(silent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到终端上。但如果加上-n参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来;
-e:expression, 表示后面是表达式,直接在命令列模式上进行 sed 的动作编辑;
-f:直接将sed的动作写在一个文件内,-f filename则可以运行filename内的sed动作;
-r:sed 的动作支持的是延伸型正规表示法的语法;
-i:in place editing 直接修改读取的文件内容,而不是输出到终端;


功能性指令:
a :append 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
d :delete 删除,因为是删除,所以 d 后面通常不接任何咚咚;
i : insert 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :print 列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :substitute 取代,替代!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!


后面的参数:
g: global

sed -i 就是直接对文本文件进行操作的
sed -i 's/原字符串/新字符串/'   /home/1.txt
sed -i 's/原字符串/新字符串/g'  /home/1.txt

这两条命令的区别看示例吧

这是1.txt的内容
#cat 1.txt d ddd #ff

再看执行这两条命令的区别

sed -i 's/d/1234/' /home/1.txt  
执行结果
1234
1234dd
#fff

sed -i 's/d/7523/g' 1.txt
执行结果
1234
123412341234
#fff

 

Linuxsed命令是一个用于文本处理的强大工具。它可以根据指定的编辑命令对输入文件进行操作,并输出结果。sed命令的基本语法如下: sed [选项] sed编辑命令 输入文件 其中,选项是可选的,用于控制sed命令的行为。sed编辑命令是指对文本进行操作的具体命令,可以是单个命令,也可以是多个命令组合在一起。输入文件是要进行处理的文本文件。 sed命令还支持通过管道将shell命令的输出作为输入进行处理,具体语法如下: shell命令 | sed [选项] sed编辑命令 此外,sed命令还可以通过-f选项指定一个sed脚本文件来进行处理,具体语法如下: sed [选项] -f sed脚本文件 输入文件 在使用sed命令时,还可以通过使用一些小技巧来实现特定的功能。例如,可以使用命令连接符";"来输出多行不连续的内容。例如,以下命令会输出passwd文件中的第1行、第3行和第5行: sed -n '1p;3p;5p' passwd 这样,你就能够根据需要使用sed命令来处理文本文件,并实现各种需要的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Linux篇】sed命令详解](https://blog.csdn.net/weixin_45842494/article/details/124699219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux - sed命令详解](https://blog.csdn.net/qq_48391148/article/details/125711532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值