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
删除最后一行。另外,可能有一种方法可以在一个命令中实现这一点,所以您可能会很快接受我的答案:)如果有更好的答案出现,请不要犹豫,改变主意!