sed を使用して、1 つのコメント以外のコメント行を削除します。

sed を使用して、1 つのコメント以外のコメント行を削除します。

複雑な使い方に慣れていませんが、sed今はこれが必要です。内容が次のパターンに従う1.txtファイルがあります。

sree@amby01:/home/sree : cat 1.txt
SSL
 this first line
#comment line
 second line
# third comment
# line nline
#ApiText
lkjfl
# my line
your line
sree@amby01:/home/sree :

これで、ブロック間のコメント行を削除したいのですが、そのSSL....#ApiText行を削除しないでください。#ApiText

出力は次のようになります。

SSL
this first line
 second line
#ApiText

bash シェルです。コメント行を個別に削除する方法はわかっていますが、コメントの後にテキストが表示されない限り、コメント行を削除する方法はわかりません。私はそれを使用するしかありませんsed

ベストアンサー1

いくつかの方法がありますが、その1つは次のとおりです。

sed '/SSL/,/#ApiText/{//b;/^#/d}' 1.txt
  • /SSL/,/#ApiText/- コマンドが実行されるアドレス範囲
  • //- 以前の正規表現がある行(SSLまたは#ApiText- 見つかった行)
  • b- コマンドの最後に移動します(意味何もしないでください)
  • /^#/d- 次に始まる行を削除(印刷しない)#

おすすめ記事