sed で数値指定する
数字のマッチは、次のようになる。
sed '/[[:digit:]]/' sed '/[0-9]/'
正規表現に親しんでいると、つぎように \d
を書きたくなるが、これは動かない。
sed '/\d/' # 動かない。
sed で複数桁の数字にマッチさせる。
動かない
sed '/[[:digit:]]+/'
動く
sed '/[[:digit:]]\+/'
元データ:サンプル
nl とfor を使ってぱぱっとデータを作ります。
takuya@bookmarklets$ for e in aaa bbb ccc ; do echo $e; done | nl 1 aaa 2 bbb 3 ccc
sed で行頭の数字を置換してみます。
行番号を sed コマンドで除去を試みてみます。
takuya@bookmarklets$ for e in aaa bbb ccc ; do echo $e; done | nl | sed 's/[[:digit:]]\+\s\+//g' aaa bbb ccc takuya@bookmarklets$ for e in aaa bbb ccc ; do echo $e; done | nl | sed 's/[0-9]\+\s\+//g' aaa bbb ccc takuya@bookmarklets$ for e in aaa bbb ccc ; do echo $e; done | nl | sed 's/\d\+\s\+//g' 1 aaa 2 bbb 3 ccc
まとめ
\d
は動かないので[[:digit:]] or [0-9]
を使う+
は解釈されないので\+
を使う。
この辺は ed / vi の置換に似てるね。
ちなみに、私が使っているのは gsed ( gnu sed ) です。
2019-05-16 追記
gsed
参考資料
regex - How to match digits followed by a dot using sed? - Super User