首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >受条件限制的字符串之间的打印行

受条件限制的字符串之间的打印行
EN

Stack Overflow用户
提问于 2020-08-25 14:11:51
回答 1查看 52关注 0票数 1

我有一个()脚本,它包含纯文本,加上分隔的bash代码块。我想将所有bash代码块提取到一个单独的文档中,标题作为代码上方的块作为注释。但是,我只希望在找不到选项includeecho时打印代码块。示例脚本:

代码语言:javascript
复制
Here's some writing. Next code chunk should be included. 

```{bash, chunk-1, option=TRUE}

Foo=“酒吧”

代码语言:javascript
复制
Now one not to be included because it contains `include`.

```{bash, chunk-2, option=TRUE, include=FALSE}

foo2="bar2“

代码语言:javascript
复制
Another code chunk not to be included because it contains `echo`. 

```{bash, chunk-3, option=FALSE, echo=FALSE}

foo3="bar3“

代码语言:javascript
复制
Finally one that should be included because `include` and `echo` are not found.

```{bash, chunk-4, option=FALSE, another_option=TRUE}

foo4="bar4“

代码语言:javascript
复制

期望的输出是

代码语言:javascript
复制
# chunk-1 
foo="bar"

# chunk-4
foo4="bar4"

块标题总是在前两个逗号之间,后面的其他选项是逗号分隔的。

我一直在和awk合作。下面将获得注释写入,但不会搜索includeecho

代码语言:javascript
复制
awk '$0 ~ /^```$/ {p=0} 
     $1 ~ /^```{bash/ {p=1; print "\n# " substr($2, 1, length($2)-1); next}
     p'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 14:43:40

您可以使用此awk

代码语言:javascript
复制
awk -F ', *' '/^```$/{p = 0} p;
/```{bash/ && !/ (include|echo)=/{print "#", $2; p=1}' file
代码语言:javascript
复制
# title-of-chunk
# here's some bash code
blah_blah="blah"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63580761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档