min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

vimの正規表現で「CSVの列の前後」を入れ替える(ホールドバッファ機能すごすぎ)

f:id:min117:20200125215414g:plain

 

名曲「We Are the World

www.youtube.com

永遠に色あせない名曲。

 

サイモン・ガーファンクルファンとしてはやはりポールサイモン。

f:id:min117:20200125212438p:plain

 

ビリージョエルも。最高すぎる。

f:id:min117:20200125212838p:plain

 

ブルース・スプリングスティーン。カッコ良すぎ。

f:id:min117:20200125212808p:plain

どの一人をとっても上手すぎというか、当時の天才がここまで一同に会する奇跡があったとは。今聴いても心が震える。

 

歌手は彼ら。

f:id:min117:20200125211939p:plain

 

vimでテキストに落とす。そして

 

こう(歌手名 時刻と並んでいる)を

f:id:min117:20200125213416p:plain

 

こう(時刻 歌手名と並び替える)したい。

f:id:min117:20200125213521p:plain

1列目(歌手名)と2列目(再生開始時刻)入れ替えるのをvim正規表現でイッパツでやりたい。

 

できた。

f:id:min117:20200125215414g:plain

 

こうやる

:%s/\([^0-9].*:space:\)\(.*:.*\)/\2 \1/g

f:id:min117:20200125213816p:plain

:%s/\([^0-9].*:space:\)\(.*:.*\)/\2 \1/g

 

:%s/(歌手名)(時刻)/(時刻)(歌手名)/g みたいなイメージ。

 

最初のカッコで捕まえた歌手名を\1として利用し、次のカッコで捕まえた時刻を\2 で利用できる。正規表現のカッコでキャプチャ(ホールド)したのをあとで使う、いわゆるホールドバッファ機能。最高に便利。

 

ちなみに

:%s/\([^0-9].*:space:\)\(.*:.*\)/\2 \1/g

とあるうちの

[^0-9]

の部分は「数字以外」なのでここでは「英文字のみ=歌手名のみ」を捕まえられる。

 

min117.hatenablog.com

 

 

保存用テキスト

0:25 Lionel Richie

0:33 Stevie Wonder

0:43 Paul Simon

0:54 Kenny Rogers

1:00 James Ingram

1:05 Tina Turner

1:13 Billy Joel

1:19 Michael Jackson

1:32 Diana Ross

1:49 Dionne Warwick

2:02 Willie Nelson

2:09 Al Jarreau

2:15 Bruce Springsteen

2:22 Kenny Loggins

2:28 Steve Perry

2:36 Daryl Hall

2:42 Michael Jackson

2:49 Huey Lewis

2:54 Cyndi Lauper

3:02 Kim Carnes

3:48 Bob Dylan

4:42 Ray Charles

4:54 Stevie Wonder & Bruce Springsteen

5:32 Bruce Springsteen

6:14 James Ingram

6:28 Ray Charles

vim最高。正規表現素晴らしすぎる。

 

追記)保存用テキストからリンクされたHatenaブログ見て回ったらとっても良かった。

note103.hatenablog.com