Vim: Замена на основе другого соответствия в строке

Необходимо создать двойную кавычку переменной:

time_stamp="$(date)"
touch "$time_stamp"

В этом случае двойная кавычка в «$ (дата)» не является обязательной, но это является хорошей практикой. Для получения дополнительной информации прочитайте это .

-121--46743-

Я закрою цикл по этому вопросу, так как мне удалось найти информацию о проблеме. Очевидно, существует несоответствие версий файлов в загрузочной папке.

Согласно этой публикации на форуме Slax, решение состоит в копировании ряда файлов из работающей системы Linux (я предполагаю, на основе Slackware). Тем не менее, я не смог найти эти файлы на любой версии Linux у меня есть.

Другое решение было предложено в этом посте на том же форуме. Это было, чтобы прокомментировать строку в bootinst.sh. Я не пытался этого, поэтому не могу подтвердить, что это работает.

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

-121--244760-

Это действительно легко сделать с sed , на самом деле. Вы просто получаете столько, сколько можете за один раз, затем t ry, t ry снова:

sed -e :t -e 's/\(<[^<]*\)[0-9]\{1,\}\([^>]*>\)/\1\2/g;tt'

Я попробовал его со следующими случайными битами ввода:


234234 '
234234 <000000000000000000000000000000000000>>
 2 <34b5c> 6 7 def

И результаты были:


234234 
234234 <>>
 2  6 7 def

regex просто соответствует по крайней мере одному числу между и > . Он продолжает заменять эту номерную последовательность ничем, пока не сможет сделать это успешно. Это назначение команды t est.

Иначе вы можете сделать это без цикла, как

sed 's/^/>/;s/\(>[^<>]*\)*[0-9]*/\1/g;s/.//' <<\INPUT        

234234 '
234234 <000000000000000000000000000000000000>>
 2 <34b5c> 6 7 def
INPUT

OUTPUT


234234 '
234234 <>>
 2  6 7 def

Он всегда будет пропускать любой > , пока не встретит - так что это влияет только на ] * > группы. Смотрите это , если вас интересует почему.

0
05.04.2015, 11:47
2 ответа

В Vim можно ограничить замену строк, которые содержат NX:

:g/NX/s/N1/NX/

Перед заменой на /NX/ Vim выполняет ее только на следующей строке, содержащей NX (с использованием диапазонов NX), а с использованием :g - на всех строках, которые совпадают с NX.

4
28.01.2020, 02:17

Для этого не обязательно открывать файл в vim. Вы можете сделать это в командной строке sed '/NX/s/N1/NX/g' <имя_фильмы> >> а затем переименовать в исходный файл.

1
28.01.2020, 02:17

Теги

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