vi движущиеся строки и слова

Я учусь на уроке UNIX, и, к сожалению, мой учитель не самый лучший... Так что мне нужна ваша помощь!

У меня есть файл с именем file1 с текстом:

Roger Mancuso
Xavier Allen
Paul Bibbens

Наш учитель хочет, чтобы мы с помощью одной команды сначала переместили верхнюю строку файла в нижнюю, чтобы она выглядела так:

Xavier Allen
Paul Bibbens
Roger Mancuso

И затем, используя команду ex, мы должны взять первые имена, переместить их после фамилий и отделить их запятой как таковой:

Allen, Xavier
Bibbens, Paul
Mancuso, Roger

Любая помощь, которую вы, ребята, могли бы оказать, была бы очень признательна, я попытался сегодня пойти в кабинет учителей, чтобы спросить его об этом, и он в основном сказал мне потеряться, так что теперь я понятия не имею, что происходит..

Спасибо вам большое!

2 ответа

Решение

:m $ - Переместить текущую строку вниз

:%s/\v(\w*) (\w*)/\2, \1/g - Для второй части

Как насчет этого для второй части?

:%s/\(.*\)\, \(.*\)/\2, \1/g

круглые скобки сохраняют то, что они соответствуют, в переменные, к которым вы можете обращаться как \1 \2 \3 и т. д.

Другие вопросы по тегам