Добавление тегов к предложению в каждой строке

Если вы посмотрите на вывод как vgs , так и vgdisplay , вы не увидите, что у вас примерно 913,51 ГБ свободного PE. Это физические экстенты, поэтому ваши группы томов LVM (VG) не имеют этих физических экстентов, назначенных ни на что. Это свободное место.

Output of vgdisplay:

--- Volume group ---
  VG Name               vg00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               925.51 GiB
  PE Size               4.00 MiB
  Total PE              236931
  Alloc PE / Size       3072 / 12.00 GiB
  Free  PE / Size       233859 / 913.51 GiB

Итак, я бы пришел к выводу, что вам нужно назначить эти физические экстенты. Самый простой способ расширить один из логических томов (LV) в этой группе VG для выделения всего свободного пространства - это следующая команда, например:

$ sudo lvextend -l+233859 /dev/vg00/home

Где мы добавляем ( +233859 ) из PE к LV / dev / vg00 / home .

1
22.02.2019, 19:30
4 ответа

Это просто, просто используйте:

sed -Ee 's/(.*[0-9])(.*)/\1 <s>\2 <\/s>/'

В вашем случае:

cat file | sed -Ee 's/(.*[0-9])(.*)/\1 <s>\2 <\/s>/' | less

Но лучше использовать имя файла после команды sed, старайтесь избегать канала, т.е.:

sed -Ee 's/(.*[0-9])(.*)/\1 <s> \2 <\/s>/' file

Для редактирования файла напрямую с помощью опции i.

1
27.01.2020, 23:30

Если я правильно интерпретирую вашу цель, попробуйте:

sed 's| | <s> |; s|$|</s>|'

Например, начиная с вашего файла:

$ cat text.ign 
TEXT1910\text0001 “ My hand is broken, ” said the sailor, “ and smoked the pipe. ” 

И, выполнив нашу команду:

$ sed 's| | <s> |; s|$|</s>|' text.ign
TEXT1910\text0001 <s> “ My hand is broken, ” said the sailor, “ and smoked the pipe. ” </s>

Как это работает:

  • s| | <s> |заменяет первый пробел на <s>.

    Sed позволяет использовать любой символ в качестве разделителя в команде подстановки. Здесь мы используем |вместо традиционного /.

  • s|$|</s>|добавляет </s>в конец строки.

    Поскольку мы используем |в качестве разделителя, нет необходимости экранировать обратную косую черту в </s>.

Что случилось с исходной командой

Из вопроса имеем:

$ sed -e 's/\(.*\) \(.*\)/ <s> \1 <\/s>\2/' text.ign 
 <s> TEXT1910\text0001 “ My hand is broken, ” said the sailor, “ and smoked the pipe. ” </s>

Проблема здесь в том, что регулярные выражения sed соответствуют самому длинному совпадению. Это означает, что первый \(.*\)соответствует всему от начала строки до последнего пробела в строке. Другой \(.*\)соответствует чему-либо после этого последнего пробела.

Поскольку строка в примере заканчивается пробелом, это означает, что \(.*\)соответствует всей строке, а другой \(.*\)не соответствует ничему. Таким образом, <s>помещается перед всей строкой, а </s>— после нее.

1
27.01.2020, 23:30
$ awk '{ $1 = $1 " <s>"; $(NF+1) = "</s>"; print }' file
TEXT1910\text0001 <s> “ My hand is broken, ” said the sailor, “ and smoked the pipe. ” </s>

Это просто добавляет пробел и открывающий тег <s>после первого поля с разделителями -, а затем закрывающий тег </s>в качестве нового поля в конце. Затем он печатает измененную строку.

Обратите внимание, что при этом несколько пробелов в данных будут объединены в один пробел.

0
27.01.2020, 23:30

Вам нужно, чтобы первая двойная кавычка до последней была заключена в html-подобную конструкцию, что выполнимо следующим образом:

sed -e 's|".*"|<s> & </s>|'  inputfile
0
27.01.2020, 23:30

Теги

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