awkは、/で区切られたディレクトリツリーの最初の3つのフォルダを印刷します。

awkは、/で区切られたディレクトリツリーの最初の3つのフォルダを印刷します。

ディレクトリツリーを印刷する変数があります。たとえば、次のようになります。

/folder1/folder2/folder3/folder4/folder5/folder6

私だけが正しい最初の4つの値、bashでバックスラッシュで区切られた最初のディレクトリだけを印刷する最良の方法は何ですか?例:

/folder1/folder2/folder3/folder4

ベストアンサー1

awkを使用してください:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    awk -F/ -vOFS=/ '{ print $1,$2,$3,$4,$5; }'

OFS= 出力フィールドの区切り記号。

$1 .. $5先行スラッシュが として計算されるので必須です1

使用カット:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    cut -f -5 -d/

sedを使用してください:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    sed 's:\(\(/[^/]\+\)\{4\}\).*:\1:'

おすすめ記事