Редактировать все строки одновременно

У меня есть файл.txt почти со всеми аэропортами мира. Каждая строка - это отдельный аэропорт, и строки имеют следующий формат: город, страна - название аэропорта (код аэропорта)

то есть:

Le Mans, France - Arnage (LME)
Detroit, USA - Willow Run (YIP)
San Francisco, USA - San Francisco International (SFO)

(полный текст.txt находится здесь: http://snipt.org/AnT8)

Но я хочу в этом формате: "Город, Страна - Название аэропорта (Код аэропорта)" => "Код аэропорта"

(да, с кавычками, это для кодирования PHP)

то есть:

"Le Mans, France - Arnage (LME)" => "LME"
"Detroit, USA - Willow Run (YIP)" => "YIP"
"San Francisco, USA - San Francisco International (SFO)" => "SFO"

Как я могу сделать это сразу?

4 ответа

Решение

Они работают из коробки на Linux, OSX и т.д.:

  1. Perl

    perl -ne 'chomp; /\((.+?)\)/; print "\"$_\" => \"$1\"\n"' list.txt
    

    больше Perl, этот использует магию:

    perl -ane 'print "\"@F\" => \"$F[$#F]\"\n"' a
    
  2. AWK / простак

    awk -F '[()]' '{print "\""$0"\" =>\""$2"\""}' list.txt
    
  3. @evilsoup's sed

    sed  -e 's/(\(...\))/(\1)" => "\1"/' -e 's/^/"/' list.txt
    

Ни один из них не меняет оригинальный файл, используйте -i для Perl и sed Параметры или перенаправить вывод, если вы хотите сохранить:

command list.txt > new_list.txt

Вы также можете использовать графический текстовый редактор с возможностями многострочного редактирования, например, Sublime Text.

  • Выберите все с помощью CmdA, затем включите режим редактирования строки с помощью ShiftCmdL.
  • Перейдите в конец строки с помощью Cmd и скопируйте код аэропорта в скобках. Затем оберните строку в кавычки, добавьте => и вставьте код снова.
  • Нажмите Esc, чтобы выйти из режима редактирования строки.

В общем, вы можете сделать то же самое, что и с одной строкой.

Emacs имеет возможность использовать несколько курсоров. Таким образом, вы можете напрямую редактировать все строки одновременно. Видеоролик об этом можно найти на веб-сайте Emacs Rocks http://emacsrocks.com/e13.html.

Вы можете скопировать и вставить его в электронную таблицу... затем разбить строки на столбцы с помощью разделителя... когда столбцы будут сделаны как "Город, Страна - Название аэропорта (код аэропорта)"... просто добавьте еще один столбец с помощью повторяющаяся строка: => и скопируйте в нее столбец "Код аэропорта".

С этим это может показаться так:

"Город, Страна - Название аэропорта (код аэропорта)" => "Код аэропорта"

Просто скопируйте и вставьте все содержимое таблицы в блокнот или любой другой текстовый редактор для Mac... и в этом редакторе замените TAB ПРОБЕЛОМ или НИЧЕГО, в соответствии с требованиями кода.

вам понадобится только программное обеспечение для работы с электронными таблицами, например MS Excel, и текстовый редактор, такой как блокнот. Я пользователь Windows, поэтому не знаю о программах для Mac...

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