同じパターンで始まる連続行を削除するには、awkまたはsedを使用してください。

同じパターンで始まる連続行を削除するには、awkまたはsedを使用してください。

たとえば、次のファイルがある場合は、sedまたはawkを使用して同じパターン「CREATE CURRENT」で始まる連続行を削除したいと思います。

CREATE CURRENT = 'aaaa' ;
CREATE CURRENT = 'bbbb' ;
CREATE CURRENT = 'aaaa' ;
CREATE CURRENT = 'dddd' ;
THIS IS A PARAGRAPH 1 ;
THIS IS A PARAGRAPH 1-1
CREATE CURRENT = 'cccc' ;
THIS IS A PARAGRAPH 2 ;
THIS IS A PARAGRAPH 2-2

結果は次のとおりです。

CREATE CURRENT = 'dddd' ;
THIS IS A PARAGRAPH 1 ;   
THIS IS A PARAGRAPH 1-1 
CREATE CURRENT = 'cccc' ;
THIS IS a PARAGRAPH 2
THIS IS a PARAGRAPH 2-2 ;

ベストアンサー1

努力する

awk '{ if ( $1 "x" != before "x" ) print ; before=$1 ; } ' file

どこ

  • $1 "x" != before "x"最初のフィールドの以前の値を使用したテスト
  • before "x"暗黙的な文字列連結では、初期化されていない優先順位の値が許可されます。
  • before=$1$1の以前の値を覚えています。

OPの編集内容を更新します。

awk 'BEGIN {cc=0 } 
    /CREATE CURRENT/ { if ( !cc++) print ; else next ;} 
    {cc=0; print ;} '
  • 連続した行はCREATE CURRENT一度だけ印刷されます。
  • 他の行はcc値を再びアクティブにします。
  • 新しい行を追加する' 'か、すべてを1行に入れることができます。

おすすめ記事