![Linux 模式搜索](https://linux22.com/image/169523/Linux%20%E6%A8%A1%E5%BC%8F%E6%90%9C%E7%B4%A2.png)
如果我有一个包含大量目录信息的文件,例如:
/home/svdev/src/lib
/home/dev/project/doc
/home/server/etc
我想获取“/home”目录旁边的目录名称。那么对于这组数据,我的输出应该是 svdev, dev, server
答案1
$ sed -e 's,^/home/,,' -e 's,/.*,,' file
svdev
dev
server
这用于sed
首先删除初始/home/
路径,然后删除/
该行剩余部分中第一个路径之后的所有内容。
我使用逗号作为s
命令的分隔符sed
以避免牙签倾斜综合症。
另一种方法sed
是将整行替换为之间的第二个内容/
:
$ sed 's,/[^/]*/\([^/]*\)/.*,\1,' file
svdev
dev
server
答案2
一种非常粗略的方法,使用cut
并指定斜杠作为分隔符:
cut -d "/" -f 3 thefile
输出:
svdev
dev
server
假设目录全部以/home
答案3
如果你想打印 /home 的子目录
find /home -type d -maxdepth 1 -mindepth 1
如果路径是文件的内容,
awk -F '/' '{printf "%s, ",$3}' file.txt