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

関連情報