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

相關內容