hoge-basic
hoge-ex
などというファイルリストがテキストであります。
hogeXXXX(XXXXは2桁〜5桁の数字)の様式になっているファイルだけを抜き出すのを、awkで行いたいのですが、どのような文を書けばいいでしょうか。
条件を整理すると、「hogeXXXX以外の文字の含まれる行を除外する条件文の書き方」です。
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
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だともっと正規表現が充実してていいのですが。
ありがとうございます。
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]))))$/’
ありがとうございます。
ありがとうございます。