我想从文件中打印一个中间部分(在开始模式和结束模式之间),特定的行会变色。
这是一个此类文件中的示例文本
## Beginning of file
Some text and code
## FAML [ASMB] KEYWORD
## Some information.
## Some other text.
## Blu:
## Some text in blue.
## END OF FAML [ASMB]
## Other text
More text and code
## FAML [ASMB] KEYWORD
和之间的文本## END OF FAML [ASMB]
将被提取(没有开头)并传递给将适当打印多行文本的##
函数。luciferin
块之间的文本被丢弃。后续块的工作方式相同,通过调用函数提取并打印中间区域luciferin(rec)
。该函数luciferin
以彩色输出。
输入字符串luciferin
为
Some information.
Some other text.
Blu:
Some text in blue.
这是捕获中间区域的 awk 脚本
BEGIN {
beg_ere = "## [[:alnum:]]+ [[][[:alnum:]]+[]]"
end_ere = "## END OF [[:alnum:]]+ [[][[:alnum:]]+[]]"
}
match($0, beg_ere, paggr) { display = 1 }
$0 ~ end_ere { display = 0 ; next }
display { print }
这是一个luciferin
函数,它接受一个字符串来输出颜色。cpt
在颜色转义序列中,并且是多行输入字符串的astr[i]
特定行。i
function luciferin(mstr) {
cpt = tseq["Grn:"]
nlines = split(mstr, astr, "\n")
for (i = 1; i <= nlines; i++) {
for ( knam in tseq ) {
if ( knam == astr[i] ) { cpt = tseq[knam] ; break }
}
if (knam == str) { print "" } else { print cpt astr[i] rst }
}
}