一次編輯所有行

一次編輯所有行

我有一個包含世界上幾乎所有機場的 .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 -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

您也可以使用具有多行編輯功能的圖形文字編輯器,例如崇高的文字

  • 使用 全部選擇CmdA,然後使用 開啟行編輯模式ShiftCmdL
  • 轉到該行末尾Cmd並將機場程式碼複製到括號中。然後將該行用引號引起來,添加=>並再次貼上程式碼。
  • Esc退出行編輯模式。

所以基本上,你可以像使用一行一樣做同樣的事情。

答案3

Emacs 確實能夠使用多個遊標。這樣,您就可以同時直接編輯所有行。有關設定的影片位於 Emacs Rocks 網站上http://emacsrocks.com/e13.html

答案4

您可以將其複製並貼上到電子表格中...然後透過分隔符號將行分成列...當列已製作為“城市、國家 - 機場名稱(機場代碼)”....簡單地添加帶有重複字串的另一列:=>並複製“機場代碼「 接下來的專欄..

這樣一來,它可能看起來像這樣:

“城市、國家 - 機場名稱(機場代碼)”=>“機場代碼”

只需將所有表格內容複製並貼上到記事本或任何適用於 Mac 的文字編輯器中...然後在該編輯器中,根據您的程式碼要求,將 TAB 替換為空格或什麼都不替換。

你只需要一個像 MS Excel 這樣的電子表格軟體,和一個像記事本這樣的文字編輯器。

相關內容