我有一个 .txt 文件,里面几乎包含了世界上所有的机场。每行代表一个不同的机场,格式如下:城市,国家 - 机场名称(机场代码)
IE:
Le Mans, France - Arnage (LME)
Detroit, USA - Willow Run (YIP)
San Francisco, USA - San Francisco International (SFO)
(完整的.txt文件在这里:http://snipt.org/AnT8)
但我想要的是这种格式:"城市,国家 - 机场名称 (机场代码)" => "机场代码"
(是的,带引号,这是用于 PHP 编码的)
IE:
"Le Mans, France - Arnage (LME)" => "LME"
"Detroit, USA - Willow Run (YIP)" => "YIP"
"San Francisco, USA - San Francisco International (SFO)" => "SFO"
我怎样才能立即完成此操作?
答案1
这些在 Linux、OSX 等上开箱即可使用:
Perl
perl -ne 'chomp; /\((.+?)\)/; print "\"$_\" => \"$1\"\n"' list.txt
更多的 Perl,这个使用魔法:
perl -ane 'print "\"@F\" => \"$F[$#F]\"\n"' a
awk/gawk
awk -F '[()]' '{print "\""$0"\" =>\""$2"\""}' list.txt
@evilsoup 的 sed
sed -e 's/(\(...\))/(\1)" => "\1"/' -e 's/^/"/' list.txt
这些都不会改变原始文件,如果您想保存,请使用-i
Perl 和sed
选项或重定向输出:
command list.txt > new_list.txt
答案2
您还可以使用具有多行编辑功能的图形文本编辑器,例如Sublime Text。
- 使用 选择全部CmdA,然后使用 打开行编辑模式ShiftCmdL。
- 转到行末Cmd→并复制括号中的机场代码。然后将该行括在引号中,添加
=>
并再次粘贴代码。 - 按下Esc可退出行编辑模式。
因此基本上,您只需执行与一行相同的操作即可。
答案3
Emacs 确实能够使用多个光标。这样,您就可以同时直接编辑所有行。有关设置的视频位于 Emacs Rocks 网站上http://emacsrocks.com/e13.html。
答案4
您可以将其复制粘贴到电子表格中...然后通过分隔符将行拆分为列...当列被制作成“城市,国家 - 机场名称(机场代码)”...简单地添加另一列重复的字符串:=>并复制“机场代码“列到它的下一个..
这样看起来可能是这样的:
"城市,国家 - 机场名称 (机场代码)" => "机场代码"
只需将所有表格内容复制粘贴到记事本或任何适用于 Mac 的文本编辑器中...然后在该编辑器中,根据代码要求将 TAB 替换为 SPACE 或 NOTHING。
你只需要一个电子表格软件,比如 MS Excel,以及一个文本编辑器,比如记事本。我是 Windows 用户,所以不了解 Mac 的软件……