我们有一个内容如下的文件。
/* ----------------- pattern_1 ----------------- */
jb: pattern_1
Data:
asdflj
adfas
Log: dir/log1
/* ----------------- pattern_2 ----------------- */
jb: pattern_2 typ: CM
comm: ${dir}/DISPV
mach: au_buh
description: "run flag"
/* ----------------- pattern_3 ----------------- */
jb: pattern_3 typ: fw
own: buh
out_file: "${log}/jl.log"
err: "log.err"
该文件必须分为 3 个并创建为 3 个单独的文件,如下所示:
pattern_1.txt
/* ----------------- pattern_1 ----------------- */
jb: pattern_1
Data:
asdflj
adfas
Log: dir/log1
pattern_2.txt
* ----------------- pattern_2 ----------------- */
jb: pattern_2 typ: CM
comm: ${dir}/DISPV
mach: au_buh
description: "run flag"
pattern_3.txt
/* ----------------- pattern_3 ----------------- */
jb: pattern_3 typ: fw
own: buh
out_file: "${log}/jl.log"
err: "log.err"
尝试过“awk模式匹配”,但没有成功。有什么帮助吗??
将这些模式注释保留在
file
:
awk '/\/\* -{17} [a-z0-9_]+ -{17} \*\// {if (x) close(x); split($0,a," "); if (a[3] != "") {x=a[3]".txt"} else {next}} {if (x) print > x}' file
这是一个近似值,您需要始终拥有符号 - 17 次,就像您的主文件一样,awk 将搜索该字符串以了解何时开始和剪切内容。因此,它将为主文件的每个模式部分提供一个 txt 文件。