Как добавить строку, которая соответствует шаблону, к предыдущей строке

Я беру хороший ответ @mattdm, чтобы показать вам практические шаги, чтобы сделать то, что вам нужно.

Выводdf

/dev/mapper/fedora-usr                           2,9G  2,7G   42M  99% /usr

показывает, что вы используете LVM (Logical Volume Manager ),и что каталог /usrсмонтирован на логическом томе LV ()с именем usrв группе томов VG ()с именем fedora.

Поэтому вам нужно сделать это:

1 )Добавьте к машине новый (физический или виртуальный )диск, чтобы обеспечить дополнительное дисковое пространство; назовем его /dev/sdc.

2 )Создать новый раздел/dev/sdc1(типа 0x8E = Linux LVM )на новом диске:

fdisk /dev/sdc 

(Я предполагаю, что вы знаете, как это сделать, поэтому я опускаю детали :нажмите n , p , 1 , и т. д.)

Это не обязательно, но рекомендуется, потому что если у вас есть другие Операционные системы, обращающиеся к диску, могут не распознать LVM и увидеть все неразмеченный диск как пустой.

3 )Инициализировать новый раздел как физический том:

pvcreate /dev/sdc1 

4 )Добавить вновь созданный PV в существующую группу томов:

vgextend fedora /dev/sdc1 

5 )Расширить логический том usr-, а также базовую файловую систему -, чтобы он занимал все свободное пространство:

lvresize -l+100%FREE --resizefs /dev/mapper/fedora-usr

Ваш раздел /usrтеперь больше любого размера раздела /dev/sdc.

2
28.08.2019, 19:55
3 ответа

Вы пометили свой вопрос тегом /linux, так что вы, вероятно, используете GNU sed. Затем вы можете использовать опцию -zдля обработки всего файла в одном буфере и использовать:

sed -z 's/\n+//g'

Это означает, что sзаменить каждый разрыв строки (\n), за которым следует знак +, ничем, что означает соединение строки, начинающейся с +, с предыдущей, отбрасывая +.

2
27.01.2020, 21:58

Я пришел с этим вawk:

awk 'BEGIN {RS=""}{gsub(/\n\+/,"", $0); print $0}' file

Выход:

******************
.WER aaa bbb ccc ddd eee  fff ggg hhh
******************
.SDF zzz xxx yyy  iii   kkk lll
******************
.XCV uuu vvv ggg  hhh qqq  rrr ttt jjj
******************
1
27.01.2020, 21:58

Использование любого awk в любой оболочке на каждом компьютере UNIX и чтение в память только одной строки за раз (другие решения, опубликованные до сих пор, считывают весь входной файл в память сразу):

$ awk '{printf "%s%s", (sub(/^\+/,"") ? "" : ors), $0; ors=ORS} END{print ""}' file
******************
.WER aaa bbb ccc ddd eee fff ggg hhh
******************
.SDF zzz xxx yyy iii kkk lll
******************
.XCV uuu vvv ggg hhh qqq rrr ttt jjj
******************
1
27.01.2020, 21:58

Теги

Похожие вопросы