2011-07-27 11 views

答えて

0

以下は、4桁の文字列とそれに続く2桁の文字列でのみ置換が行われます。

$ echo '201107' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)/\1-\2/' 
2011-07 

sedの正規表現があるため\dの欠如、および括弧と中括弧(ただしbrakets)をエスケープする必要があるため、少し厄介です。私の解答であるべきであるならば、's/(\d{4})(\d{2})/\1-\2/'でなければならない。

18
echo "201107" | sed 's/201107/2011-07/' 

しかし、冗談、ここではより一般的な解決策があります:

echo "201107" | sed 's/^\(.\{4\}\)/\1-/' 

これは、最初の4つの文字の後に-を挿入します。

HTH

0

私は(少なくとも私のGNUは4.2.2をSED)、これは巨大な恐竜を掘りされていますが、不確実なsedのバージョンの場合は6つのテーリングゼロ

echo '20110715000000' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{6\}\)/\1-\2-\3/' 
関連する問題