У меня есть большой файл со строками, которые похожи
2 Никаких маршрута к указанной транзитной сети
3 Никаких маршрута месту назначения
И я хотел бы преобразовать это для использования на языке программирования к
{2, "Никакой маршрут к указанной транзитной сети"},
{3, "Никакой маршрут месту назначения"},
Как я сделал бы это?
Основное преобразование,
sed 's|^\([0-9]\)\(.*\)|{\1,"\2"}|g' file.txt > file2.txt
в vim
,
:%s/\([0-9] \(.*\)/{\1,"\2"}/g
Это покроет строки, запускающиеся с формата,
N text on the line...
Где N
единственное число цифры.
Может быть расширен далее для других форм.
В Вашем случае простое регулярное выражение достаточно (и лучшее решение). Однако в некоторых других случаях, записывая макрос могло бы быть лучше.
Существует простой макро-пример в документации энергии, разделите 12.1, и дальнейшее описание в :help q
Вкратце:
q
сопровождаемый буквой (буква register
где макрос будет зарегистрирован).q
прекратить записывать.Для проигрывания макроса нажать @
сопровождаемый буквой, где макрос был зарегистрирован. Для воспроизведения последнего макроса нажать @@
. Введите число прежде, чем играть макрос для повторения его как много раз по мере необходимости.
Так, в Вашем случае, для преобразования строк как это:
2 No route to specified transit network
{2, "No route to specified transit network"},
qa
(выбор регистра a
было произвольно).I{<esc>f cl, "<esc>A"},<esc>j
q
прекратить записывать.100@a
и будьте счастливым наблюдением играемого макроса.:-)Я оставлю читателю объяснение каждой команды от шага 3.;-)
Конечно, это не единственное решение. Вы, возможно, сделали шаг 3 по-разному.