パスから2番目の要素を抽出する方法は? [コピー]

パスから2番目の要素を抽出する方法は? [コピー]

sedを使用してこれらのパターンをどのように抽出できますか?

これが私の道です:/sample/xyz/logs/test.logs

出力は次のようになります。xyz

たとえば、次のようにパスが変更された場合はどうなりますか?

/example/xyz/log/test.logs?

sedを使用しますか、それともawkを使用しますか?

ベストアンサー1

私はこれを行う3つの方法を知っています。パスが標準入力に渡されると仮定します。

方法1

echo "/sample/xyz/logs/test.logs" | cut -d / -f 3

これにより、指定された区切り文字を使用して入力が切り捨てられ、必要な-d /xyz部分の3番目のフィールドが選択されます。

方法2

echo "/sample/xyz/logs/test.logs" | awk -F / '{print $3}'

awkは非常に複雑なロジックを書くことができる非常に強力なコマンドです。この単純な形式でこれを使用して、方法1と同じことを実行できます。

方法3

echo "/sample/xyz/logs/test.logs" | sed -r 's/^\/\w+\/(\w+)\/.*/\1/g'

正規表現と共に使用する場合は、sed最初のスラッシュ、後続の単語、および後続のスラッシュを省略できます。 2番目のスラッシュの後の単語を取り、残りを削除します。

ご覧のとおり、これらの方法の複雑さが増加します。

おすすめ記事