プロが教えるわが家の防犯対策術!

grepで40~70の数字をリストアップするコマンドを教えてください。

1
2
3
4
5



のように1~100まで改行して数字が書かれているテキストファイルがあります。

40
41
42



70
という様にgrepコマンドなどで40~70までを数字をリストアップするコマンドはないでしょうか?

A 回答 (3件)

grep '^\([4-6][0-9]\|70\)$'



もし、sed を使う場合はこんな書き方もあります。

sed -ne '/^40$/,/^70$/p'

(40にマッチしたところから70にマッチしたところまでを出力)
    • good
    • 0

数として考えず、文字として考えたら、 40~70は「4から6までの文字のあとに0から9までの文字」であるか「7のあとに0」であるか、です。


これを、grep流の正規表現であらわせば
[4-6][0-9]\|70
実際のコマンドラインでは、特殊文字をシェルで解釈しないようにシングルクォートとで括って
grep '[4-6][0-9]\|70'
です。

ただし、これはご質問にあったテキストファイル以外では正解ではないでしょう。
例えば、200までのテキストだったら、140とかにもマッチします
    • good
    • 0

数字しかかかれていないなら、検索パターンに


([4-6][0-9]|70)
と指定してやれば大丈夫じゃないかと……
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!