すべての行を一度に編集する

すべての行を一度に編集する

世界中のほぼすべての空港が記載された .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 の sed

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

これらはいずれも元のファイルを変更しないので、保存したい場合は-iPerl とオプションを使用するか、出力をリダイレクトします。sed

command list.txt > new_list.txt

答え2

複数行編集機能を備えたグラフィカルテキストエディタを使用することもできます。崇高なテキスト

  • ですべて選択しCmdA、 で行編集モードをオンにしますShiftCmdL
  • の行末に移動しCmd、括弧内の空港コードをコピーします。次に、行を引用符で囲み、 を追加して=>、コードを再度貼り付けます。
  • 押すEscと行編集モードを終了します。

つまり、基本的には、1 行で行うのと同じことを行うことができます。

答え3

Emacsには複数のカーソルを使う機能があります。そうすれば、すべての行を同時に直接編集できます。この設定に関するビデオは、Emacs RocksのWebサイトにあります。http://emacsrocks.com/e13.html

答え4

これをスプレッドシートにコピー&ペーストして、区切り文字を使って行を列に分割します。列が次のように作成されている場合は、「都市、国 - 空港名(空港コード)」... 繰り返し文字列を含む別の列を追加するだけです:=>空港コード「次の列に...」

そうすると、次のようになります。

「都市、国 - 空港名(空港コード)」 => 「空港コード」

すべてのテーブル内容をメモ帳または Mac 用のテキスト エディターにコピーして貼り付けます。そのエディターで、コード要件に応じて、TAB をスペースまたは何もない状態に置き換えます。

必要なのは、MS Excel のようなスプレッドシート ソフトウェアと、メモ帳のようなテキスト エディターだけです。私は Windows ユーザーなので、Mac 用のソフトウェアについてはわかりません...

関連情報