一次编辑所有行

一次编辑所有行

我有一个 .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 等上开箱即可使用:

  1. Perl

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

    更多的 Perl,这个使用魔法:

    perl -ane 'print "\"@F\" => \"$F[$#F]\"\n"' a
    
  2. awk/gawk

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

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

这些都不会改变原始文件,如果您想保存,请使用-iPerl 和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 的软件……

相关内容