繁体   English   中英

到达非注释行时停止打印

[英]Stop printing when non-comment lines are reached

我在以下表格的各部分之间打印

## FAML [ASMB] keyword,keyword  

## Some text

## END OF FAML [ASMB]

我遇到了未达到“## END OF FAML [ASMB]”时出现的问题。 我想在遇到不以注释字符“##”开头的行时立即停止。

例如,我想在到达“一些代码”时停止,即使它没有找到“## END OF FAML [ASMB]”,因为该行不是以“##”开头。

## FAML [ASMB] keyword,keyword  

## Some text

## End OF FAL

Some code

这是实现

spc='[[:space:]]*'
gph="[[:graph:]]+"
cmt='\/\/'
ebl='\['
ebr='\]'

local pn_ere="^[[:space:]]*([#;!]+|@c|${cmt})[[:space:]]+"
local kys="(([^,]+)(,[^,]+)*)?"

nfaml=${faml:-"[[:graph:]]+"}
nasmb=${asmb:-"[[:graph:]]+"}

beg_ere="${pn_ere}${nfaml} ${ebl}${nasmb}${ebr}${spc}${kys}$"
end_ere="${pn_ere}END OF ${nfaml} ${ebl}${nasmb}${ebr}${spc}$"

sed -E -n "/$beg_ere/,/$end_ere/ {
     /$end_ere/z; s/$pn_ere// ; p
  }" "$filename"

您可以检查未评论并忽略。 例如

# ...

notcom_ere='^[^#[:space:]]+'

sed -E -n "/$beg_ere/,/($end_ere)|($notcom_ere)/ {
    /$notcom_ere/d
    /$end_ere/z
    s/$pn_ere//
    p
}" "$filename"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM