Linux 模式搜索

Linux 模式搜索

如果我有一个包含大量目录信息的文件,例如:

/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

相关内容