如何使用bash脚本从文件中删除特定部分

问题描述:

我有一个文件abc.txt,我想从bash脚本中删除文件中的特定部分。如何使用bash脚本从文件中删除特定部分

#######################Media###################### 
[Media] 
     comment = Media Files 
     path = /share22 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Add####################### 
[Add] 
     comment = Media Files 
     path = /share33 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Added##################### 
[Added] 
     comment = Media Files 
     path = /share44 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 

和从文件

#######################Add####################### 
[Add] 
     comment = Media Files 
     path = /share33 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 

除去下面部分I如何删除的第一部分,第二部分或最后部分?

请帮助我!

+0

由文本替换图像。用四个空格前缀代码/数据。请看[编辑帮助](http://*.com/editing-help)。 – Cyrus

+1

请阅读http://*.com/help/how-to-ask,http://*.com/help/dont-ask,http://*.com/help/mcve并参加[tour] (http://*.com/tour),然后再发布更多Q​​值。祝你好运。 – shellter

给定的输入是适合的简单的解决方案:

awk '/##Add##/,/##end##/ {next};1' abc.txt 

sed '/##Add##/,/##end##/d' abc.txt 

Awk西装最适合这种类型的文本文件处理,你可以使用下面的一个

awk '/^[#]+(Add)[#]+/{f=1}f && /^[#]+(end)[#]+/{f=0; next}!f' file 

# OR combined one 

awk '/^[#]+(Add|end)[#]+/{if(f){f=0; next}if(/^[#]+(Add)[#]+/)f=1}!f' file 

测试结果:

输入

$ cat file 
#######################Media###################### 
[Media] 
     comment = Media Files 
     path = /share22 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Add####################### 
[Add] 
     comment = Media Files 
     path = /share33 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Added##################### 
[Added] 
     comment = Media Files 
     path = /share44 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 

输出 - 1:

$ awk '/^[#]+(Add)[#]+/{f=1}f && /^[#]+(end)[#]+/{f=0; next}!f' file 
#######################Media###################### 
[Media] 
     comment = Media Files 
     path = /share22 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Added##################### 
[Added] 
     comment = Media Files 
     path = /share44 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 

输出 - 2:

$ awk '/^[#]+(Add|end)[#]+/{if(f){f=0; next}if(/^[#]+(Add)[#]+/)f=1}!f' file 
#######################Media###################### 
[Media] 
     comment = Media Files 
     path = /share22 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
#######################Added##################### 
[Added] 
     comment = Media Files 
     path = /share44 
     browseable = yes 
     read only = yes 
     guest only = no 
#######################end####################### 
+0

非常感谢我的问题已解决。你能解释一下命令吗,因为我是新手,对我非常有帮助。 –

+0

@ZubairMughal欢迎您,您可以阅读此https://*.com/help/someone-answers –

+0

你能解释一下吗? –