Bash 解析shell脚本中的文本文件并提取列表中的值

Bash 解析shell脚本中的文本文件并提取列表中的值,bash,Bash,我有一个包含以下内容的文本文件 NewFile1.txt Targets: target1 target2 target3 ....... Build Configurations: config1 config2 config3 ....... Sch

我有一个包含以下内容的文本文件

NewFile1.txt
        Targets:
            target1
            target2
            target3
            ....... 

        Build Configurations:
            config1
            config2
            config3
            .......

        Schemes:
            schemeName1
            schemeName2 
            schemeName3
            ...........
            ...........
我想解析文件,提取所有方案,并将其放入列表中。
如何实现这个shell脚本?

假设在
schemeNameEx
列表之后有一个换行符:

sed -n '/Schemes:/,/^$/p' 
-n
标志禁用隐式输出,因此我们可以指定
sed
仅在一定范围内打印。范围的开始由测试此文本是否出现在行中的某个位置的
/Schemes://
定义,而范围的结束由测试行是否为空的
/^$/
定义


这还将返回
方案:
行和一个尾随换行符,使用
head
tail
可以很容易地丢弃它们。下面是一个使用awk的单行解决方案

awk 'p && NF {print;} /Schemes:/ {p=1}' NewFile1.txt
schemeName1
schemeName2 
schemeName3

请。看看网上的“awk vs sed”,你会发现在大多数情况下,awk比sed更方便。

你可以使用很多工具:
grep
awk
sed
perl
。。。是一个示例正则表达式,它或多或少实现了您想要的功能,请随意使用它。到目前为止,您的问题是离题的,因为您没有向我们展示任何您尝试过的代码,也没有告诉我们您使用了什么工具。请毫不犹豫地编辑您的问题以添加其他详细信息。请显示您的问题。你应该包括一个你有问题的代码,然后我们可以尝试帮助解决具体的问题。你也应该读。谢谢亚伦。这就是我所需要的,但是我如何使用head和tail来删除方案:和final行。我不熟悉脚本。您可以使用
tail-n+2
删除第一行,使用
head-n-1
删除最后一行。另外,可能有一种方法可以在一个命令中实现这一点,所以您可能会很快接受我的答案:)如果有更好的答案出现,请不要犹豫,改变主意!