読者です 読者をやめる 読者になる 読者になる

pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


sedで日本語表記の日付から年月日の漢字を消して/に置き換える

2017年 4月 19日や2017年4月19日のような日付形式をsedで置換しようとしたら意外にハマったのでメモ。

ポイントは以下の通り。 - ( や ) はエスケープ必要 - blankspace もエスケープ必要? - + や ? もエスケープ必要 - { や } もエスケープ必要

やりたいパターンマッチはこういう内容。

https://regexper.com/#(%5B0-9%5D%2B)%E5%B9%B4%20%3F(%5B0-9%5D%2B)%E6%9C%88%20%3F(%5B0-9%5D%2B)%E6%97%A5

だけど sed ではエスケープせねばならない部分が多いので、結果的にこういう処理になる。

$ echo '2017年  4月 19日' | sed 's/\([0-9]\+\)年\ \?\([0-9]\+\)月\ \?\([0-9]\+\)日/\1\/\2\/\3/g'
2017/4/19

上記の内容を踏まえたうえで日本語の日付時刻から漢字を抜く処理をこんなふうに書いてみた。

#!/bin/sed -f

s/\([0-9]\+\)年\ \?\([0-9]\+\)月\ \?\([0-9]\+\)日/\1\/\2\/\3/g
s/\([0-9]\+\)時\ \?\([0-9]\+\)分\ \?\([0-9]\+\)秒/\1:\2:\3/g
s/曜日//g
s/日/Sun/g
s/月/Mon/g
s/火/Tue/g
s/水/Wed/g
s/木/Thu/g
s/金/Fri/g
s/土/Sat/g