Как уже упоминалось в комментариях, это последний PV в VG, поэтому вы не можете его удалить, потому что это уничтожит VG, а программному обеспечению LVM негде хранить метаинформацию о VG. С этого момента ваша операция немного бессмыслица. Это будет иметь смысл только в других системах/программном обеспечении LVM.
Правильное действие в вашем случае - уничтожить ВГ:
vgremove lubuntu-vg
Аналогичным образом вы можете использовать sed-файл с шаблонами подстановки, а затем применить этот sed-файл к целевому тексту.
Вот содержимое примера sed-файла с именем my _custom _substitutions.sed на основе ваших замен выше:
s/\<import\>/IMPORT/g
s/\<module\>/MODULE/g
Вы можете увидеть, как эти пользовательские замены будут выглядеть перед фактическим применением их к файлу:
sed -f my_custom_substitutions.sed targetfile.txt
Чтобы применить эти пользовательские замены к целевому файлу с помощью sed:
sed -i -f my_custom_substitutions.sed targetfile.txt
Другим способом может быть использованиеtr
:
echo "lower case text" | tr '[a-z]' '[A-Z]'
Если вы хотите сделать это из vim для строки 2 в вашем файле, вы можете сделать:
:2 ! tr '[a-z]' '[A-Z]'
Если вы хотите применить это к нескольким строкам в диапазоне, например, от строки 2 до строки 4, вы можете сделать:
:2,4 ! tr '[a-z]' '[A-Z]'
Если у вас есть файл с командами Vim, вы можете применить его к файлу с помощью параметра -S
редактора Vim:
$ cat edits
%s/\<import\>/IMPORT/g
%s/\<module\>/MODULE/g
%s/\<bumblebee\>/BUMBLEBEE/g
%s/\<please\>/PLEASE/g
%s/\<for\>/FOR/g
%s/\<over\>/OVER/g
%s/\<do\>/DO/g
%s/\<done\>/DONE/g
wq
$ cat program
module top.
import "library".
for i over <zoidberg> -> do
bumblebee i:th, please.
done
$ vim -S edits program
$ cat program
MODULE top.
IMPORT "library".
FOR i OVER <zoidberg> -> DO
BUMBLEBEE i:th, PLEASE.
DONE
Обратите внимание, что последний wq
в файле edits
сохранит документ с тем же именем файла, что и оригинал.
Также обратите внимание, что это необычный способ редактирования файлов с терминала и что чаще используется потоковый редактор, такой какsed
(см. ниже ).Основные проблемы, связанные с этим, заключаются в том, что Vim не является не -интерактивным редактором и что он будет считывать весь документ в память перед выполнением сценария редактирования (, который неэлегантен , когда он не нужен ). Вам также обременительно поддерживать сценарий редактирования, а не простой список ключевых слов.
Предположим, у вас есть файл со списком ключевых слов в нижнем регистре, которые необходимо преобразовать в верхний регистр, по одному ключевому слову в строке.
Простая программа на Perl превратила бы список в sed
сценарий редактирования:
$ cat keywords
import
module
bumblebee
please
for
over
do
done
$ perl -pe 's{.*}{s/\L\\<$&\\>/\U$&\L/g}' keywords
s/\<import\>/IMPORT/g
s/\<module\>/MODULE/g
s/\<bumblebee\>/BUMBLEBEE/g
s/\<please\>/PLEASE/g
s/\<for\>/FOR/g
s/\<over\>/OVER/g
s/\<do\>/DO/g
s/\<done\>/DONE/g
Код Perl просто берет каждую строку и вставляет ее в sed
выражение
s/\<word\>/WORD/g
, где word
и WORD
— строка в одной из строк в файле keywords
, в нижнем -, а затем в верхнем -регистре.
Затем это можно применить к исходному коду вашей программы.:
$ cat program
module top.
import "library".
for i over <zoidberg> -> do
bumblebee i:th, please.
done
$ perl -pe 's{.*}{s/\L\\<$&\\>/\U$&\L/g}' keywords | sed -f /dev/stdin program
MODULE top.
IMPORT "library".
FOR i OVER <zoidberg> -> DO
BUMBLEBEE i:th, PLEASE.
DONE
С помощью -f /dev/stdin
, sed
может прочитать сценарий редактирования из вывода Perl, а затем применить его к данному файлу (здесь, файлу с именемprogram
).
Обратите внимание, что эта упрощенная замена слов не будет знать о правилах цитирования вашего языка, поэтому она заменит любые ключевые слова, найденные в строках и т. д., которые, возможно, не нужно заменять.