Mam .ini
plik z tym wzorem:
[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
Każdy zestaw danych od [PresetX]
do Len=X
reprezentuje jedno ustawienie wstępne. Chcę uporządkować tę listę alfabetycznie Name=X
. Potrzebuję jednak pierwszego ustawienia wstępnego w pliku [Preset0]
i ustawienia wstępne muszą pozostać w kolejności numerycznej. Tak więc moim pożądanym wynikiem byłoby:
[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
Jak miałbym to zrobić za pomocą bash?
Preset
kolejność numeryczna nie zgadza się zName
kolejnością alfabetyczną, musisz ją wybrać. Wygląda na to, że plik jest już w kolejności numerycznejPreset
. Czy chcesz przenieść całyPreset
blok, aby ułożyć bloki w kolejności alfabetycznejName
?Odpowiedzi:
Nie wiem, jak sortować i przyrost z
sed
, więc to rozwiązanie mieszankised
,bash
isort
.źródło
|
to nie zadziała, ponieważ wszystkie nowe linie\n
bloku są zastępowane przez|
w pierwszym sed, a w drugim sed\n
są odkładane. W takim przypadku powinieneś zastąpić go innym „nie występującym” znakiem.