У меня есть файл .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"
Как я могу сделать это сразу?
macos
text-manipulation
Хьюго
источник
источник
sed -i -e 's/(\(...\))/(\1)" => "\1"/ -e 's/^/"/' file.txt
Слишком поздно для меня, чтобы развернуть это в правильный ответ с объяснением, но если кто-то еще хочет, они должны чувствовать себя свободно.Ответы:
Они работают из коробки на Linux, OSX и т.д .:
Perl
больше Perl, этот использует магию:
AWK / простак
@ evilsoup's sed
Ничто из этого не изменяет исходный файл, используйте
-i
для Perl иsed
параметров или перенаправьте вывод, если вы хотите сохранить:источник
sed
выполнить редактирование на месте без сохранения резервной копии, синтаксис немного отличается:sed -i '' ...
(с GNU sed, в''
этом нет необходимости).-i
вызываетsed
НЕ создавать резервную копию? В любом случае, поскольку моя команда sed (evilsoup) заключена в кавычки, смысл спорный, верно? Он будет редактировать на месте в OSX , если вы просто добавить-i
кsed
команде , как это?-i
опция запускает редактирование на месте и позволяет, например, указать расширение для файла резервной копииsed -i.bkp ...
. Если вы хотите редактировать на месте, но не хотите делать резервную копию, вы указываете пустое расширение; в-i ''
двойных кавычках - явная пустая строка, сообщающая sed, что нет расширения для резервной копии, и, следовательно, нет резервной копии. Обратите внимание, что это полностью отделено от цитирования выражения sed.Вы также можете использовать графический текстовый редактор с возможностями многострочного редактирования, например, Sublime Text .
=>
и снова вставьте код.В общем, вы можете сделать то же самое, что и с одной строкой.
источник
Emacs имеет возможность использовать несколько курсоров. Таким образом, вы можете напрямую редактировать все строки одновременно. Видеоролик об этом можно найти на веб-сайте Emacs Rocks http://emacsrocks.com/e13.html .
источник
Вы можете скопировать и вставить его в электронную таблицу ... затем разбить строки на столбцы с помощью разделителя ... когда столбцы будут сделаны как "Город, Страна - Название аэропорта (код аэропорта)" ... просто добавьте еще один столбец с помощью повторяющаяся строка: => и скопируйте в нее столбец « Код аэропорта ».
С этим это может показаться так:
"Город, Страна - Название аэропорта (код аэропорта)" => "Код аэропорта"
Просто скопируйте и вставьте все содержимое таблицы в блокнот или любой другой текстовый редактор для Mac ... и в этом редакторе замените TAB ПРОБЕЛОМ или НИЧЕГО, в соответствии с требованиями кода.
вам понадобится только программное обеспечение для работы с электронными таблицами, например MS Excel, и текстовый редактор, такой как блокнот. Я пользователь Windows, поэтому не знаю о программах для Mac ...
источник