Saya punya .ini
file dengan pola ini:
[Preset0]
Data=78367571EE5E
Data_1=3483290482
Data_2=299230-293
Data_3=2390920391
Name=Mono Lead
Len=3994
[Preset1]
Data=78367571EE5E
Data_1=3483290482
Data_2=299230-293
Data_3=2390920391
Name=Funky Bass
Len=4001
[Preset2]
Data=0200002E3434
Data_1=342EFD340433
Data_2=000000043425
Data_3=EDFE00000000
Name=Airy Pad
Len=3713
Setiap set data dari [PresetX]
untuk Len=X
mewakili satu preset. Saya ingin membuat daftar ini menurut abjad Name=X
. Namun, saya memerlukan preset pertama dalam file [Preset0]
dan saya perlu preset untuk tetap dalam urutan angka. Jadi, output yang saya inginkan adalah:
[Preset0]
Data=0200002E3434
Data_1=342EFD340433
Data_2=000000043425
Data_3=EDFE00000000
Name=Airy Pad
Len=3713
[Preset1]
Data=78367571EE5E
Data_1=3483290482
Data_2=299230-293
Data_3=2390920391
Name=Funky Bass
Len=4001
[Preset2]
Data=78367571EE5E
Data_1=3483290482
Data_2=299230-293
Data_3=2390920391
Name=Mono Lead
Len=3994
Bagaimana saya melakukan ini dengan bash?
Preset
urutan numerik tidak cocok denganName
urutan abjad, maka Anda harus memilih satu. Tampaknya file tersebut sudah dalam urutan numerikPreset
. Apakah Anda ingin memindahkan seluruhPreset
blok untuk menempatkan blok dalam urutan abjadName
?Jawaban:
Saya tidak tahu cara memilah dan menambah
sed
, jadi solusi ini bercampursed
,bash
dansort
.sumber
|
itu tidak akan berfungsi, karena semua baris baru\n
blok digantikan oleh|
di sed pertama, dan di sed kedua\n
yang dikembalikan. Dalam hal ini Anda harus menggantinya dengan karakter 'tidak terjadi' lainnya.