min117の日記

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

bash radikoの番組表の改行を sed -z で削除する cat myradikolistSPITZ.txt | grep -B 1 prog | sed -z s/'@\n'/''/g

前回と同じ手順で SPITZのラジオの番組表を作りたい。

f:id:min117:20200223223456p:plain

 

スピッツ最高。いつ聴いても最高。

www.tfm.co.jp

min117.hatenablog.com

 

myradikosearchChannel 全国の局の一覧を返す 例:FMFUKUI 福井

./myradikoBANGUMI.sh 引数に取った局の番組表を返す(xmlで)


こんなんしまして

$ L=myradikolistSPITZ.txt; for i in $(myradikosearchChannel | awk '{print $1}' ); do echo "$i"_@ | tee -a "$L";./myradikoBANGUMI.sh "$i" | grep -B 1 SPITZ | grep -B 3 title | tee -a "$L";done

 

$ cat myradikolistSPITZ.txt

f:id:min117:20200223223841p:plain

progの行で 開始時刻(ft)終了時刻(to)が読み取れる。

 

で、progの直前の行ラジオ局名なわけだ。

f:id:min117:20200223224156p:plain

てことはprogとその直前の行だけを取り出しせねばならない。catとgrepやる。

 

grep -B(efore) 1 prog とやれば、progの前(Before)の1行が取れる。

$ cat myradikolistSPITZ.txt | grep -B 1 prog

f:id:min117:20200223224702p:plain

さて、あとは

FMMIE_@の行progの行を 繋げれば

局名(FM三重開始終了時刻 が1行に入る

 

改行の取り去りが難しい。cat と sedやる。

$ cat myradikolistSPITZ.txt | grep -B 1 prog | sed -z s/'_@\n'/''/g

f:id:min117:20200223225225p:plain

すげ。GNU sed では sed -z で改行を取り去れるらしい。

 

このサイト天才。いつも勉強になる。

orebibou.com

 

ここまでくれば、あとはちょっと加工してCSVにする。

$ cat myradikolistSPITZ.txt | grep -B 1 prog | sed -z s/'_@\n'/''/g | awk -F= '{print $1,$2,$3}' | sed -e s/'<prog ft '/''/g | sed -e s/'to'/''/g | sed -e s/'ftl'/''/g |sed -e s/'"'/''/g | sed -e s/'--'/''/g | sed -z s/'  \n'/''/g | sed -e s/' '/','/g | sed -e s/',,,,,,,,,,'/','/g | sed -e s/',,'/','/g

 

f:id:min117:20200223231440p:plain

うむ。

 

もう少し加工する。

cat myradikolistSPITZ.txt | grep -B 1 prog | sed -z s/'_@\n'/''/g | awk -F= '{print $1,$2,$3}' | sed -e s/'<prog ft '/''/g | sed -e s/'to'/''/g | sed -e s/'ftl'/''/g |sed -e s/'"'/''/g | sed -e s/'--'/''/g | sed -z s/'  \n'/''/g | sed -e s/' '/','/g | sed -e s/',,,,,,,,,,'/','/g | sed -e s/',,'/','/g | sed -s s/'00,'/','/g | sed -z s/',\n'/'\n'/g | sort -t, -k 1 | uniq | sort -t, -k 2

 

f:id:min117:20200223232213p:plain

 

末尾に文字列を足す。vimでやる。

'<,'>s/\n/,SPITZ\r/g 

f:id:min117:20200223233839p:plain

あとは前回と同じスクリプトに食わせる。

min117.hatenablog.com