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

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

У меня есть файл .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"

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

решение1

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

  1. Перл

    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

решение2

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

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

По сути, вы можете сделать то же самое, что и с одной линией.

решение3

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

решение4

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

При этом это может выглядеть так:

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

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

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

Связанный контент