ファイルへのパス(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)"
)