複雑な使い方に慣れていませんが、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
- 次に始まる行を削除(印刷しない)#