人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:AWK BASIC EX hoge XXXX
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● aki0843
●30ポイント

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

◎質問者からの返答

ありがとうございます。


2 ● zrabbit
●30ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

一桁以上でよければ、

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だともっと正規表現が充実してていいのですが。

◎質問者からの返答

ありがとうございます。


3 ● nazooooo
●30ポイント

http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/awk/intro...

AWK$B$G@55,I=8=(B

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

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

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

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

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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ