vi - шаблоны

и другие vi-подобные редакторы

Модератор: /dev/random

IgorChe
Сообщения: 3
ОС: MacOSX 10.6

vi - шаблоны

Сообщение IgorChe »

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

Код: Выделить всё

grep Answer:* 047.txt > Ans047.txt

и в нем можно просто пронумеровать ответы по порядку,
а как удалить строки с ответами из исходника, что то не выходит,
пробую

Код: Выделить всё

:%s/Answer:$//g
не находит шаблон
Спасибо сказали:

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: vi - шаблоны

Сообщение ZyX »

IgorChe писал(а):
15.10.2010 18:11
привет,
помогите пожалста,
к примеру есть на входе файл с вопросами и ответами после каждого вопроса,
хотелось бы средствами vi копировать номера вопросов и вырезать номера ответов в
отдельный файл по порядку, то есть на выходе получаем два файла,
один с вопросами без ответов, второй с номерами вопросов и соответственными
ответами..
по сути сделать файл с ответами просто:

Код: Выделить всё

grep Answer:* 047.txt > Ans047.txt

и в нем можно просто пронумеровать ответы по порядку,
а как удалить строки с ответами из исходника, что то не выходит,
пробую

Код: Выделить всё

:%s/Answer:$//g
не находит шаблон

вы неправильно применяете регулярные выражения. В первом случае должно быть

(Created by format.vim)

grep ^Answer:


(Во-первых, звёздочка здесь лишняя: grep и так берёт строку целиком. Во-вторых, звёздочка в вашем примере относится к двоеточию и означает «ноль или более двоеточий», а не то, что вы хотели.)

Во втором шаблоне другая ошибка: знак доллара означает конец строки, а не «с данного места до конца строки». Разумеется, он ничего не находит: ведь после «Answer:» у вас идёт ответ, а не конец строки? Если вы хотите оставить пустые строки, замените всю конструкцию на

(Created by format.vim)

%s/^Answer:.*//g


, если же пустые строки не нужны, используйте :g:

(Created by format.vim)

%g/^Answer:.*/d


(Здесь d — это сокращённая запись команды delete, а не модификатор как g в :s.)

Во всех шаблонах я исходил из предположения, что перед ответом ничего нет, если у вас не так, уберите ^.
Спасибо сказали:

IgorChe
Сообщения: 3
ОС: MacOSX 10.6

Re: vi - шаблоны

Сообщение IgorChe »

понятно, спасибо, все отработало..
но grep корректно сработал и в моем случае..
но все равно, спасибо большое!
..а как добавить номера по порядку в начало каждой строки в текст?..
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4764
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: vi - шаблоны

Сообщение SLEDopit »

IgorChe писал(а):
15.10.2010 18:41
..а как добавить номера по порядку в начало каждой строки в текст?..
мне кажется эта задачка немножко не для вима. я сделал бы так:

Код: Выделить всё

cat -n file > file.tmp; mv file.tmp file

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: vi - шаблоны

Сообщение ZyX »

IgorChe писал(а):
15.10.2010 18:41
понятно, спасибо, все отработало..
но grep корректно сработал и в моем случае..
но все равно, спасибо большое!
..а как добавить номера по порядку в начало каждой строки в текст?..

(Created by format.vim)

g/^/execute "normal! I".printf('%*u ', len(line('$')), line('.'))


Спасибо сказали:

Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: vi - шаблоны

Сообщение Portnov »

Ну, если хочется в виме...

Код: Выделить всё

:%!cat -n

;)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: vi - шаблоны

Сообщение ZyX »

Portnov писал(а):
15.10.2010 19:21
Ну, если хочется в виме...

Код: Выделить всё

:%!cat -n

;)

Вообще-то, это как раз имеет смысл, если не хочется терять историю правок. Впрочем, в данном случае её и так не останется после grep.
Спасибо сказали:

IgorChe
Сообщения: 3
ОС: MacOSX 10.6

Re: vi - шаблоны

Сообщение IgorChe »

Portnov писал(а):
15.10.2010 19:21
Ну, если хочется в виме...

Код: Выделить всё

:%!cat -n

;)

strong! thnx, dudes!!
Спасибо сказали: