(追記。2016年6月3日)
cat asty-ch_member.tab | gsed -e 's|\([0-9]{4}\)\.\([0-9]\?\)\.\([0-9]\?\)|\1/\2/\3|g' | less
いや、むしろ、「2016/5/31」=>「2016.5.31」、となってしまった。
まあ、それはそれで構いませんけどね。データの形式が、揃ってればいいんで。
========================================
日付の表示形式を変えたい。
一行の中に出てくる「2016.5.31」という日付表示を、「2016/5/31」に変えたい!
そこで、自分なりに頑張って、シェル芸に取り組んでみました。
要は、sed の使い方なんですけどね。
これでできました! バンザイ!
cat asty-ch_member.tab | gsed -e 's|\(....\)\.\(.\?\)\.\(.\?\)|\1/\2/\3|g' | less
手間取ったのは、sed での正規表現の書き方です。
shell でのワイルドカードの書き方と混同しておりました。
(ただし、まだ、sed での改行がよく分からない・・・)
<参考にしたページ>
sed でのワイルドカードの書き方
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231046/
正規表現 | 意味 |
---|---|
. | 改行文字以外の任意の1文字 |
* | 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない |
^ | 行の先頭 |
$ | 行の末尾 |
[ ] | かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる |
[^ ] | かっこ内の任意の1文字に不一致。ハイフン(-)で範囲指定もできる |
\+ | 直前の文字の1個以上の繰り返しに一致 |
\? | 直前の文字の0または1文字に一致 |
\{n\} | 直前の文字のn個の繰り返しに一致 |
\{n,\} | 直前の文字のn個以上の繰り返しに一致 |
\{,m\} | 直前の文字のm個以下の繰り返しに一致 |
\{n,m\} | 直前の文字のn個以上,m個以下の繰り返しに一致 |
パターン1\|パターン2 | パターン1またはパターン2のいずれかに一致 |
\(パターン\) | パターンをグループ化する。マッチした内容は\1や\2として利用できる |
\ | 正規表現に使われる記号を普通の文字として扱う |
No comments:
Post a Comment