我有以下场景,我必须根据两种不同的模式分割两个文件..
PLS。考虑我有以下文本文件:
$cat file1
====S abcd efgh ijkl mnop ====G qrst uvwX yzab
为此,我有一个像awk '/====/{x="S"++i;next}{print > x;}'
这样的脚本 - 它正在分割两个文件,如S,S1。
有少数例外文件没有第一个模式==== S
看起来像是
====G qrst uvwX yzab
如果我为这种文件运行上面的脚本,我得到文件名S,它将这些记录添加到第一个模式==== S.但是,这里我想要文件名S1。这意味着如果我在文件中只有==== G,我需要将这些值放在S1文件中。
我怎样才能做到这一点?请求您的时间并为此提供任何解决方案。
谢谢,
答案 0 :(得分:0)
只需使用map来记住模式。
cat t.log
====S
abcd
efgh
ijkl
mnop
====G
qrst
uvwX
yzab
cat t1.log
====G
qrst
uvwX
yzab
awk '/====/{cur=$0; if(!p[$cur]){p[$cur]="S"++i}; file=p[$cur];next}{print >file;}' t.log t1.log