
ディレクトリツリーを印刷する変数があります。たとえば、次のようになります。
/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:'
答え2
もしあれば強く打つそしてvar
能力がある
echo ${var%/${var#/*/*/*/*/}}
別の方法
IFS=/ var=($var)
printf '%b/' "${var[@]::5}\n\c"