要剪切字符串中的最后一个字段,我使用:
command: echo /dir1/dir2/dir3/file | awk -F "/" '{ print $NF; }'
output: file
如何从同一字符串中的最后一个分隔符获取左侧的所有内容?
desired output: /dir1/dir2/dir3
谢谢你的帮助
拉斯蒂
bash
本身就足以做到这一点:
VAR="/dir1/dir2/dir3/file" echo ${VAR%/*}
如果您正在专门使用文件名,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