Awk

如果找到匹配的關鍵字,則刪除上面的行

  • May 17, 2020

我有這樣的數據:

Amit:   
 Mem  30  40 50  
Sumit:  
 Mem  50 70 80   
Tarun:  
Nishant:  
 Mem  90 20 45    

如在“Tarun:”中,Mem 不存在需要刪除它。

最終輸出應該是

Amit:   
 Mem  30  40 50   
Sumit:   
 Mem  50 70 80   
Nishant:   
 Mem  90 20 45     

請幫助我解決這個問題。我已經嘗試但無法獲得所需的輸出

$ sed '$!N;/\n  Mem/p;D' file
Amit:
 Mem  30  40 50
Sumit:
 Mem  50 70 80
Nishant:
 Mem  90 20 45
  • $!N:對於不是最後一行的每一行,將下一行附加到緩衝區,中間有一個定界換行符。
  • /\n  Mem/p: 如果緩衝區現在包含一個換行符,緊跟在字元串後面Mem(兩個空格和Mem),則列印緩衝區。您也可以使用[[:blank:]]*代替兩個空格來允許在行首使用任意數量的空格或製表符Mem
  • D: 刪除緩衝區中直到第一個換行符的數據,並開始下一個循環。

引用自:https://unix.stackexchange.com/questions/586296