くそみたいなsedのリベンジ | 不定期新聞

不定期新聞

パソコン、音楽、モバイル、ゲーム、アイカツの記事が多いかも。
アイカツ新聞になってる気がしなくもなくもない

以前sedでハイフンがとれなくて悩んでたクソプログラマだよ

この前書いたやつはこんな感じだったね

$ sed -e "s/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1\2\3/g"

これね、実はそんなに間違ってないんだけど前提が破綻してるんだよね

だって置換したいパターンにハイフンが入ってないんだもの

んで、その時苦心して作って成功したsedってのがこれね。

$ sed -e "s/\-//g"

でもこれ作った時はデータが一行に対してハイフン区切りのデータが1パターンだけっていう想定だった。

だから

$ sed -e "s/\-//g"

これでもいけた。

でも、これって例えば

YYYY-MM-DDだけじゃなくてほかにハイフン区切りのデータが入ってたらそこもハイフンなくなっちゃうんだよね

というわけで

$ sed -e "s/\([0-9]\{4\}\)\-\([0-9]\{2\}\)\-\([0-9]\{2\}\)/\1\2\3/g"

これが正しいです。勉強になりました。