2015-11-11 29 views
-2

輸入文件具有很多文本塊的重複(在關鍵字的開始和結尾處標記「塊」)。我如何只打印那些不包含「NoGrade」的塊? sed或awk比pcgreg,perl更好(我可以在其中創建一個解決方案。)
問題補充 - >另外,如何避免匹配輸出的重複? 輸入文件(文本的重複塊):如果模式匹配,則連續打印文本塊

Blocks 
    GradeA 
    GradeZ 
    NoGrade 
Blocks 
    GradeA 
    GradeB 
    GradeC 
    GradeA 
Blocks 
    GradeD 
    GradeS 
    GradeE 
    NoGrade 
Blocks 
    GradeX 
    GradeY 
    GradeZ 
Blocks 
    GradeA 
    GradeB 
    GradeC 
    GradeA 
Blocks 

輸出:

Blocks 
    GradeA 
    GradeB 
    GradeC 
    GradeA 
Blocks 
    GradeX 
    GradeY 
    GradeZ 
Blocks 
+0

謝謝α射線。這有效,我理解語法。輸出中如何避免重複塊?如果我發現這一點,我也會在這裏發佈答案。 –

回答

2
awk -vRS='Blocks' '!/NoGrade/{printf "%s",$0 RT}' file 
Blocks 
GradeA 
GradeB 
GradeC 
GradeA 
Blocks 
GradeX 
GradeY 
GradeZ 
Blocks 
+0

'RT'變量特定於'gawk' ....很好的答案 –

相關問題