ファイルパス(txtファイルなど)を含むpath.txtファイルがあります。
/Folder/F1/F2/F3/F4/.../Fn/abc.txt
パス、つまり最初から最後の項目までの文字列を抽出したい/
(パス内のフォルダの数が異なる可能性があるため)。
私は欲しい:
/Folder/F1/F2/F3/F4/.../Fn
sed/awk/perl/viのどれが最良の選択であり、どのように選択しますか?
答え1
上記のツールのいずれかを使用するには、次のものを使用できますsed
。
echo "/Folder/F1/F2/F3/F4/.../Fn/abc.txt" | sed "s/\/[^/]*$//"
sed -i "s/\/[^/]*$//" path.txt
Bashを使用している場合は、Bashパラメータ拡張を使用してこれを達成できます。
path=$(cat path.txt)
echo "${path%/*}"
言ったように隅にあなたはそれを使用することができますdirname
。
答え2
basename
dirname
引数として与えられたファイル名の最後の部分と最後の部分を除くすべての部分を印刷します。
$ dirname "/Folder/F1/F2/F3/F4/.../Fn/abc.txt"
/Folder/F1/F2/F3/F4/.../Fn
(またはドキュメントからdirname "$(< pathname.txt)"
:)