hoge0001

hoge-basic
hoge-ex
などというファイルリストがテキストであります。
hogeXXXX(XXXXは2桁〜5桁の数字)の様式になっているファイルだけを抜き出すのを、awkで行いたいのですが、どのような文を書けばいいでしょうか。
条件を整理すると、「hogeXXXX以外の文字の含まれる行を除外する条件文の書き方」です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/01/19 17:29:25
  • 終了:--

回答(3件)

id:aki0843 No.1

aki0843回答回数5ベストアンサー獲得回数02005/01/19 17:40:33

ポイント30pt

http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_5.html#SEC25

The GNU Awk User's Guide - $B@55,I=8=(B

数字の指定はキャラクタリスト(character list)で「[0-9]」のように指定できます。また、出現回数はinterval expresionで「{2,5}」のように指定できます。

したがって、「hogeXXXX以外の文字の含まれる行を除外する条件文」は上記2つを組み合わせた以下の表現で実現可能です。

awk --posix ’/hoge[0-9]{2,5}/ { print }’ hoge-list

id:takeuchi_k

ありがとうございます。

2005/01/20 17:42:00
id:zrabbit No.2

zrabbit回答回数10ベストアンサー獲得回数02005/01/19 17:50:25

ポイント30pt

一桁以上でよければ、

ls | awk ’/hoge[0-9]/{ print $0 }’

厳密に2桁から5桁目だと、複雑になり、

ls | awk ’/hoge([0-9]$|[0-9][0-9]$|[0-9][0-9][0-9]$|[0-9][0-9][0-9][0-9]$|[0-9][0-9][0-9][0-9][0-9]$)/{ print $0 }’

ですか。。Perlだともっと正規表現が充実してていいのですが。

id:takeuchi_k

ありがとうございます。

2005/01/20 17:42:38
id:nazooooo No.3

nazooooo回答回数26ベストアンサー獲得回数02005/01/19 18:25:42

ポイント30pt

awkは正規表現が使えるのですがこれでどうでしょうか。

#単にhoge+1桁以上の数字ならば

awk ’/^hoge[0-9]+$/’

#hoge+2〜5桁の数字で限定ならば

awk ’/^hoge([0-9]?([0-9]?([0-9]?([0-9][0-9]))))$/’

id:takeuchi_k

ありがとうございます。

2005/01/20 17:42:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません