如何从shell字符串中剪切最后一个字段

use*_*134 21 string shell cut

如何剪切此shell字符串中的最后一个字段

LINE="/string/to/cut.txt"
Run Code Online (Sandbox Code Playgroud)

所以字符串看起来像这样

LINE="/string/to/"
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Luc*_*nes 58

对于它的价值,cut基于a 的解决方案:

NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
Run Code Online (Sandbox Code Playgroud)

  • 我可以确认这确实有效,在Unix和GNU的cut实现中.显然,对于OP特定用例,dirname答案更好,但是我在搜索一般方法来删除最后一个字段时发现了这个,就是这样. (5认同)

use*_*272 18

我想你可以使用"dirname"命令.它接收输入文件路径,删除文件名部分并返回路径.例如:

$ dirname "/string/to/cut.txt"
/string/to
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 15

这将适用于现代Bourne版本,如Dash,BusyBox ash等,以及后代,如Bash,Korn shell和Z shell.

LINE="/string/to/cut.txt"
LINE=${LINE%/*}
Run Code Online (Sandbox Code Playgroud)

或保持最后的斜线:

LINE=${LINE%/*}/
Run Code Online (Sandbox Code Playgroud)