Linuxコマンドを使用してファイルのサブタイトルの下の行を削除する方法

Linuxコマンドを使用してファイルのサブタイトルの下の行を削除する方法

以下のファイルがあります。特定のサブタイトルの下の行を個別に削除したいと思います。 sedコマンドとawkコマンドを試してみましたが、取得できませんでした。この問題をハックするためにいくつかのLinuxコマンドを使用するのに役立つ人はいますか?

[first attempt]
a=10
b=20

[second attempt]
a=20
b=20

[third attempt ] 
a=30
b=50

「[2回目の試み]」サブタイトルの下の行を個別に削除したいと思います。出力は以下のようになります。サブタイトルの下のコンテンツのみを削除し、オプションで削除された行を空の行に置き換えたいと思います。

[first attempt]
a=10
b=20

[second attempt]

[third attempt ] 
a=30
b=50

ベストアンサー1

awk -v blkid=0 -v rmblk=2 '{
      if ( $1 ~ /^\[/) {
            blkid+=1;blkn=NR;print };
      if ( blkid !=rmblk && NR!=blkn )
            print ;
      else if(blkid ==rmblk && NF == 0)
                  print ""}' file.txt

各ブロックのIDは1から始まり、各ブロックに対して1ずつ増加しますblkid

削除するブロックのブロックID:rmblk

各ブロックは、最初のフィールドがで始まるときに始まります[

この変数はblknNR値[first attempt] [second attempt]などを格納します。

おすすめ記事