如何解决如何提取文档的一部分并将其保存到新文档Mac命令行
我们的构建服务器需要将应用发布到App Center。 App Center允许我提供发行说明文件。
问题是,我们的ReleaseNotes.md
包含所有版本,对于App Center接受它来说变得很大。
注释的格式如下:
# Project - Release Notes - Android
## 1.20.2 - 2020-09-11
* [UID-4782] - Connectivity issues fixed
## 1.20.1 - 2020-09-08
* [UID-4639] - Update Color
* [UID-4760] - Changed some stuff
如何仅抓取第一个条目并将其保存到文件中?:
## 1.20.2 - 2020-09-11
* [UID-4782] - Connectivity issues fixed
并将其保存到文件吗?
如果研究过awk,grep,sed和pcergrep之类的工具,但无论如何我都不熟悉,我也不知道哪一个是适合该工作的工具。
解决方法
这个awk应该可以完成工作:
awk -v RS= '/^##/{print; exit}' file
## 1.20.2 - 2020-09-11
* [UID-4782] - Connectivity issues fixed
,
在“段落模式”中使用awk
,方法是将RS设置为空字符串,然后将其保存到另一个文件中:
awk -v RS= '/issues fixed/' file > file2
## 1.20.2 - 2020-09-11
* [UID-4782] - Connectivity issues fixed
,
使用sed
:
sed -n '/^##/,/^$/{p;/^$/q;}' input_file > output_file
-
-n
:默认情况下不打印行。 -
/^##/
:找到以##
开头的行。 -
/^$/
:找到一个空行。 -
/^##/,/^$/
:这意味着从##
开始的行和空白行之间的每一行。 -
p
:打印行。 -
/^$/q
:如果该行为空,请退出。我们这样做是因为否则sed将处理下一个更改块。
所以我做了一些bash脚本学习,并创建了以下脚本:
#!/bin/bash
foundFirstEntry=false
"ReleaseNotes.md" | while read p; do
if [[ $p = \#\#* ]]
then
foundFirstEntry=true
fi
if [[ $foundFirstEntry = true && $p = "" ]]
then
break
fi
if $foundFirstEntry
then
echo "$p"
fi
done > "ShortReleaseNotes.md" < "ReleaseNotes.md"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。