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行全体を次の 2 番目の項目に置き換えることです/

$ 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

関連情報