Чтобы восстановить данные в подобной ситуации, вам почти наверняка придется раскопать свои резервные копии. К несчастью.
Предполагая, что каждый раздел начинается с текста Millionaire
, вы сможете сделать это с помощью vim
/ex
-либо в интерактивном режиме, либо в сценарии, например, так:
$ ex SashaMillionaire.md << 'EOF'
:g/^Millionaire$/+5,+8 sort
:1,$p
:q
EOF
Millionaire
123456788763237476
QUESTION|2402394827049882049
Who is the greatest Goddess in the world?
Саша
Валерия
Катя
Кристина
Саша
AuthorOfQuestion
Millionaire
459385734954395394
QUESTION|9845495845948594999
Where Sasha live?
Novgorod
Chistopol
Kazan
Novgorod
St. Petersburg
Another author
Millionaire
903034225025025568
QUESTION|ABC121980850540445C
Another question.
Katya
Chistopol
Katya
Kazan
Sasha
Unknown author
Чтобы изменить файл на месте -, замените оператор печати 1,$p
наw
ex SashaMillionaire.md << 'EOF'
:g/^Millionaire$/+5,+8 sort
:wq
EOF
или, если вы предпочитаете один вкладыш -вместо настоящего документа,
printf ':g/^Millionaire$/+5,+8 sort\nwq\n' | ex SashaMillionaire.md
С помощью awk
вы можете сделать что-то вроде:
awk '
$0 == "Millionaire" {
if (n < 0) {
close("sort")
print last
}
n = 4
}
n > 0 {
n--
print
next
}
n-- {print last | "sort"}
{last = $0}
END {
if (n < 0) {
close("sort")
print last
}
}'
Для сортировки строк от четвертой после Millionaire
до второй перед следующей Millionaire
.