如何使用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如何删除的第一部分,第二部分或最后部分?
请帮助我!
给定的输入是适合的简单的解决方案:
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#######################
非常感谢我的问题已解决。你能解释一下命令吗,因为我是新手,对我非常有帮助。 –
@ZubairMughal欢迎您,您可以阅读此https://stackoverflow.com/help/someone-answers –
你能解释一下吗? –
由文本替换图像。用四个空格前缀代码/数据。请看[编辑帮助](http://stackoverflow.com/editing-help)。 – Cyrus
请阅读http://stackoverflow.com/help/how-to-ask,http://stackoverflow.com/help/dont-ask,http://stackoverflow.com/help/mcve并参加[tour] (http://stackoverflow.com/tour),然后再发布更多Q值。祝你好运。 – shellter