Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題1

問題1 ファイル名の検索

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

ファイル名のリストから.exeの拡張子を持つものをいかにして抜き出すかという問題だった。grepを使うだけだったのでこれは割と簡単な気がした。ファイル名のリストはfile.txtにあるが、これの中身は次の通りである:

test.txt
test.exe
画面仕様書_v2.0.xls
画面仕様書.xls.exe
secret file.md
画面仕様書_改訂版.xlsx
画面仕様書_最新バージョン.xls
README.md
秘密のファイル.exe.jpeg
LICENSE
execution.sh
packman_exe
重要書類.doc

上記のリストに対して次のコマンドを実行すれば抜き出せる(「''」の中では正規表現が使われている)。

cat files.txt | grep '\.exe$'

上記のコマンドに関して2ヶ所解説をする。まず「.」についてだが、「.」は正規表現では何か一文字を表す記号となるため、¥を書いて「.」をエスケープしないと「packman_exe」が引っかかってしまう。次に、$についてはこの記号で行末を表しているため、この記号がないと「秘密のファイル.exe.jpeg」が引っかかってしまう。