URLがあります:
www.google.com/word/word1/word_2/word3/word4
_
awkを使用して特殊文字を含む単語のみを印刷したいと思います。場合によっては、フォルダ階層が変更されることがあります。
www.google.com/word/word1/word2/word3/word_4
私はこれを使用していますが、時々フォルダが上にあることがあります$6
。
folder=$(echo "$url" | awk -F/ '{print $6}')
/
文字の間にフォルダ名を印刷する必要があります。
ベストアンサー1
これはうまくいきます。おそらくより効率的な方法があります。
echo 'www.google.com/word/word1/word2/word3/word_4' | awk -F'/' '{for(i=2;i<=NF;i++){if($i~/_/){print $i}}}'
word_4
すべてのフィールドを繰り返し、単語にアンダースコアが含まれていることを確認すると、その単語が印刷されます。 2以降、ドメイン名は変更されていないと仮定します。
非反復的なアプローチのアイデア:
$ echo 'www.google.com/word/word1/word_2/word3/word4' | awk '{print gensub(/^.*\/([^/]+_[^/]*).*/,"\\1","1")}'
word_2
awkが必要ない場合、よりエレガントな解決策は次のとおりです。
$ echo 'www.google.com/word/word1/word_2/word3/word4' | grep -oE '[^/]+_[^/]*'
word_2