求める動作
入力 | 出力 |
---|---|
/home/foo/hoge/fuga | ~/h/fuga |
/home/bin/hoge/fuga | /h/b/h/fuga |
状況
bashのプロンプトをいじっているのですが、パスを短くしたいです。
ユーザをfoo
としたとき、/home/foo/hoge/fuga
を~/h/fuga
、/home/bin/hoge/fuga
を/h/b/h/fuga
と表示させたいです。
sed
で置換しようと考えたのですが、pwd | sed -e "s;$HOME;~;g" | sed -e "s;\w(\w+)/;;g"
では$HOME
の置換はできるのですが、~/h(oge)/fuga
の()で囲んだ部分がうまく置換できません。
おそらくグループ化した部分ではなく、正規表現の一致部分全部に対して置換を行っていると思います。
どのように書き換えれば思うような動作になるでしょうか?
ご教授お願いします。
環境
GNU bash 5.0.18(1)-release (x86_64-pc-linux-gnu)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/12 19:07