如何从sed路径中删除最后一个目录?

yae*_*ael 8 shell sed path

如何删除最后一个目录sed(不是dirname),如下所示:

echo "/dir1/dir2/dir3/dir4" | sed .....
Run Code Online (Sandbox Code Playgroud)

所以我会得到/dir1/dir2/dir3.

gho*_*g74 28

您不必使用外部工具

$ a="/dir1/dir2/dir3/dir4"

$ echo ${a%/*}


prz*_*moc 7

sed 's,/*[^/]\+/*$,,'
Run Code Online (Sandbox Code Playgroud)

如果它是shell脚本的一部分,那么dirname肯定会更清楚.


Sha*_* D. 6

echo "/etc1/etc2/etc3/etc" | sed -e "s/\/[^\/]*$//"
Run Code Online (Sandbox Code Playgroud)

产生

/etc1/etc2/etc3
Run Code Online (Sandbox Code Playgroud)

基本上删除最后一个斜杠后面不包含另一个斜杠的任何内容。

  • 哎呀,像 przemoc 一样使用逗号作为分隔符可以更好地避免必须转义脚本中的斜杠,从而使其更具可读性。我总是犯这样的错误。 (2认同)

Ale*_*lex 5

您可以使用“目录名”shell 命令:

dirname /dir2/dir3/dir4
Run Code Online (Sandbox Code Playgroud)