使用 sed 在行首插入一个字符,模式匹配的行和空行除外

使用 sed 在行首插入一个字符,模式匹配的行和空行除外

我有点卡住了..我有一个包含以下数据的文件:

Group: Lorem ipsum dolor sit amet, consectetur adipiscing elit.   
POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. https://www.lorem.org/
Embedded Lorem ipsum dolor sit amet, consectetur adipiscing elit. )

Group: Lorem ipsum dolor sit amet, consectetur adipiscing elit.  
POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
POM Lorem ipsum dolor sit amet, consectetur adipiscing elit.  https://Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Embedded Lorem ipsum dolor sit amet, consectetur adipiscing elit. )

我想在每行的开头添加分号,除了以 Group 开头的行

所以我得到这样的最终结果:

Group: Lorem ipsum dolor sit amet, consectetur adipiscing elit.  
;POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
;POM Lorem ipsum dolor sit amet, consectetur adipiscing elit.  https://Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
;Embedded Lorem ipsum dolor sit amet, consectetur adipiscing elit. )

Group: Lorem ipsum dolor sit amet, consectetur adipiscing elit.  
;POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
;POM Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
;Embedded Lorem ipsum dolor sit amet, consectetur adipiscing elit. )

如果模式不匹配,我可以添加执行此操作:

sed '/^Group:/! s/^/;/' index1.txt

但我想忽略空行。

我缺少什么?

答案1

只需增强您的匹配模式以包含空行:

sed '/^Group:\|^$/! s/^/;/' index1.txt 

这样空行也将保持不变。

答案2

那这个呢:

sed '/^Group:\|^$/! s/^/;/' file

答案3

使用 Posix sed :

 $ sed -e '/^Group:/! s/^./;&/' index.txt

相关内容