我有一個文件,它看起來像:如何提取多行模式之間的線條?
blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
<empty line here>
Total DOS and NOS and partial (IT) DOSDOWN
<empty line here>
E Total 1
<empty line here>
-1.5000 0.004 0.000 0.004
-1.4953 0.004 0.000 0.004
-1.4906 0.004 0.000 0.004
-1.4859 0.004 0.000 0.004
-1.4812 0.004 0.000 0.004
0.3563 0.708 5.510 0.708
0.3609 0.562 5.513 0.562
0.3656 0.381 5.515 0.381
0.3703 0.149 5.517 0.149
<empty line here>
Sublattice 1 Atom Fe spin DOWN
我想是提取(第一圖案)
Total DOS and NOS and partial (IT) DOSUP
<empty line here>
E Total 1
<empty line here>
和(第二圖案)
<empty line here>
Sublattice 1 Atom Fe spin DOWN
即之間的所有行我想得到
-1.5000 0.004 0.000 0.004
-1.4953 0.004 0.000 0.004
-1.4906 0.004 0.000 0.004
-1.4859 0.004 0.000 0.004
-1.4812 0.004 0.000 0.004
0.3563 0.708 5.510 0.708
0.3609 0.562 5.513 0.562
0.3656 0.381 5.515 0.381
0.3703 0.149 5.517 0.149
因此,在一天結束時,我希望在兩個多行模式之間有行。 據我所知awk
可以通過狀態機檢測多行模式(見here),但我沒有做到這一點在我的情況。
任何建議如何解決這個問題將非常感激。
第二圖案可以減少到'<空這裏線>'' – karakfa
AWK -v RS =「NR == 3」 file'將打印文本的第三空白線分隔塊等產生輸出你想要的 - 你不能這樣做的任何原因? –
@EdMorton好的。我使它太複雜了... – hek2mgl