N番目とM番目のパターン発生の間の文字列を抽出するには?

N番目とM番目のパターン発生の間の文字列を抽出するには?

ファイルパス(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

basenamedirname引数として与えられたファイル名の最後の部分と最後の部分を除くすべての部分を印刷します。

$ dirname "/Folder/F1/F2/F3/F4/.../Fn/abc.txt" 
/Folder/F1/F2/F3/F4/.../Fn

(またはドキュメントからdirname "$(< pathname.txt)" :)

関連情報