【指导】sed - GNU vs BSD

本文对比了Linux环境下的GNUsed与macOS默认的BSDsed在替换、插入、删除操作上的语法差异,并提供了具体实例帮助理解。

linux 环境下多用 GNU sed, mac OS 默认使用的 BSD sed。二者语法或多或少均有差异,仅以此文记录碰到的坑:

1,sed -i

 linux  sed -i 's/old/new/g' file 
 mac OS  sed -i '' 's/old/new/g' file # 加空串是因为这里的sed强制要求备份 


 

2,插入行

 linux  sed -i "/startline/a\\$string" file # 行后追加  sed -i "/endline/i\\$string" file # 行前插入 
 mac OS 

 sed -i "" -e "/startline/a\\

 $string" file #  行后追加,需要加-e和换行 

 sed -i ""-e "/endline/i\\

 $string" file # 行前插入,需要加-e和换行






3,删除行

a) 删除匹配行中间的部分:

 linux  sed '/PATTERN-1/,/PATTERN-2/{//!d}' file 
 mac OS  sed '/PATTERN-1/,/PATTERN-2/{//!d;}' file # 花括号前多加个分号,以避免 extra characters at the end of d command 错误 



b) 删除匹配行及中间的部分:

 linux & mac OS  sed '/PATTERN-1/,/PATTERN-2/d' file 


c) 删除匹配行及之后的部分:

 linux & mac OS  sed '/PATTERN-1/,$d' file 


d) 删除特定行号直接的部分(如2-4行):

 linux & mac OS  sed '2,4d' file 


===================

后续会陆续补充,有新发现的也请留言提醒,我来补充

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值