正規表現を使用して、ファイル パスから 2 つのドットを単純化するにはどうすればよいでしょうか (パスは実際には存在しない可能性があります)。
たとえば、またはに変更/my/path/to/.././my/./../../file.txtします。/my/file.txtpath/./to/../../../file.txt../file.txt
bash の 1 つのコマンドでこれを行うことは可能ですか? (sedたとえば、複雑な python や perl スクリプトを使用しない)
編集:この質問に遭遇しましたがrealpath、使用しているコンピューターでは利用できません。
edit : FJのソリューションから、より一般的なケースで機能する次の正規表現を構築することになりました (パスの一部のフォルダーの名前が の場合は機能しません....)。
sed -e 's|/\./|/|g' -e ':a' -e 's|\.\./\.\./|../..../|g' -e 's|^[^/]*/\.\.\/||' -e 't a' -e 's|/[^/]*/\.\.\/|/|' -e 't a' -e 's|\.\.\.\./|../|g' -e 't a'