要剪切字符串中的最后一个字段,我使用:
command: echo /dir1/dir2/dir3/file | awk -F "/" '{ print $NF; }'
output: file
如何从同一个字符串中的最后一个分隔符左侧获取所有内容?
desired output: /dir1/dir2/dir3
谢谢你的帮助
Rasty
答案 0 :(得分:3)
bash
本身就足以做到这一点:
VAR="/dir1/dir2/dir3/file" echo ${VAR%/*}
答案 1 :(得分:2)
如果您专门使用文件名,dirname
和basename
是工作的工具:
pax$ dirname /dir1/dir2/dir3/file
/dir1/dir2/dir3
pax$ basename /dir1/dir2/dir3/file
file
对于任意分隔符,您可以使用sed
:
pax$ echo /dir1/dir2/dir3/file | sed 's?/[^/]*$??'
/dir1/dir2/dir3
pax$ echo /dir1/dir2/dir3/file | sed 's?^.*/??'
file
第一个替换序列“斜线后跟零或多个非斜线到行尾”(/file
),什么也没有。第二个替换从行的开头到最后一个斜杠(/dir1/dir2/dir3/
)的所有内容。
如果要将这些命令的输出分配给变量,可以使用$()
:
pax$ filespec=$(basename /dir1/dir2/dir3/file) ; echo $filespec
file
答案 2 :(得分:1)