You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AWK或Linux命令提取路径中的最后一级目录名?

解决路径提取需求:保留最后一级目录名

需求说明

有个文本文件,DIRECTORY列的路径长度不固定,还可能存在双斜杠,原始内容如下:

DIRECTORY                          FILES      SIZE
documents/my_name/directory1/       2          96M
documents/my_name/directory2/       4          21M
documents/my_name//directory3/      1          43M

需要移除前缀路径,仅保留最后一级目录名,支持两种输出格式:要么保留目录名末尾的斜杠,要么去掉。

AWK实现方案

1. 保留末尾斜杠

用AWK可自动处理双斜杠问题,命令如下:

awk 'NR==1{print;next} {gsub(/\/+/,"/"); n=split($1,arr,"/"); $1=arr[n-1]"/"; print}' your_file.txt
  • 第一行表头直接输出,不做处理
  • gsub(/\/+/,"/")把所有连续斜杠(包括双斜杠)替换成单斜杠,统一路径格式
  • 将处理后的路径按斜杠拆分成数组,取倒数第二个元素(原路径末尾带斜杠,最后一个元素为空),加上斜杠替换原路径列
  • 输出处理后的整行内容

2. 去掉末尾斜杠

只需调整最后一步的目录提取逻辑:

awk 'NR==1{print;next} {gsub(/\/+/,"/"); n=split($1,arr,"/"); $1=arr[n-1]; print}' your_file.txt

Sed备选方案

如果习惯用sed命令,也能实现需求:

保留末尾斜杠

sed '2,$ s/.*\/\([^\/]*\/\)/\1/' your_file.txt

去掉末尾斜杠

sed '2,$ s/.*\/\([^\/]*\)\/$/\1/' your_file.txt

  • 2,$指定从第二行开始处理,跳过表头
  • 通过正则匹配前缀路径,捕获最后一级目录名,替换为捕获的内容即可

内容的提问来源于stack exchange,提问作者sylar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:51:14