- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:awkの正規表現について)
awkを使用して特定のディレクトリの1階層下のディレクトリ名とファイル名を抽出する方法
このQ&Aのポイント
- ディレクトリ名とファイル名の一覧ファイルから、特定のディレクトリの1階層下のディレクトリ名とファイル名を抽出する方法について質問があります。
- 質問の場合、awkコマンドを使用して1階層下のディレクトリとファイルのみを抽出したいと考えています。
- 現在のawkコマンドでは、1階層下のディレクトリを含む全てのディレクトリとファイルが抽出されてしまいます。正しい書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
awk '$1 ~ /^\/foo\/bar\/([^/]+\/?)?$/ {print}' dir.txt かな?
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
うん, そんな感じで書いたつもり. 全体の ()? は「そのディレクトリ」にマッチさせるため, その中の [^/]+\/? は「そのディレクトリの 1つ下のファイルおよびディレクトリ」にマッチさせるため.
質問者
補足
もうちょっと、正規表現の勉強をしてみます。 回答ありがとうございました。
補足
試してみたのですが、うまくいきませんでした。 環境はDebian(Etch)、bashです。 上記コマンドを実行した結果、何も出力しませんでした。 ([^/]+\/?)?$は スラッシュ以外の文字の連続で最後がスラッシュかスラッシュ以外のもの という認識でよいのですか?