Linux 如何删除文件外壳脚本中的文本块?
我有下面的场景,我有一个文本块和示例Linux 如何删除文件外壳脚本中的文本块?,linux,sh,Linux,Sh,我有下面的场景,我有一个文本块和示例 basketball: ball: round 因为我不知道篮球里面到底是什么:但我喜欢删除里面的所有东西例如: men: height: 170 athlete: basketball women: height:180 athlete: basketball 我只想删除men块,忽略此键上方或下方的任何内容。下面的AWK脚本将删除包含篮球的所有men部分。这就是你的意思吗?使用awk-f filter.awk input.txt运行
basketball:
ball: round
因为我不知道篮球里面到底是什么:但我喜欢删除里面的所有东西例如:
men:
height: 170
athlete: basketball
women:
height:180
athlete: basketball
我只想删除men块,忽略此键上方或下方的任何内容。下面的AWK脚本将删除包含篮球的所有men部分。这就是你的意思吗?使用
awk-f filter.awk input.txt运行
/^[A-Za-z0-9]/ {
if (sectionWanted) {
printf "%s", section
}
sectionWanted = 1
section = ""
sectionName = $1
}
/basketball/ && sectionName == "men:" {
sectionWanted = 0
}
{
section = section $0 "\n"
}
END {
if (sectionWanted) {
printf "%s", section
}
}
如果这实际上是一种类似YAML的结构化格式,那么可能使用一种能够解析该结构的语言。你是说所有这些行都在同一个文件中吗?或者这是两组示例数据?如果是一个文件,请合并行以显示实际文件内容,以消除歧义。如果它是两个文件,并且您想要删除men:
块,那么您可以简单地使用awk'NF==1&&$1==“men:{n=1;next};NF==1{n=0}n==0'
file`