以下のファイルがあります。特定のサブタイトルの下の行を個別に削除したいと思います。 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
各ブロックは、最初のフィールドがで始まるときに始まります[
。
この変数はblkn
NR値[first attempt] [second attempt]
などを格納します。