/ etc / passwdファイルを処理して、ホームフォルダが/ homeにあるすべてのユーザーを一覧表示します。

/ etc / passwdファイルを処理して、ホームフォルダが/ homeにあるすべてのユーザーを一覧表示します。

次のサンプル/etc/passwdファイルがあります。

tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash

ホームフォルダを持つすべてのユーザーを一覧表示しようとしています/home/

私は書いた

cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'

e.txtはここにコピーしたテキストです。

バックスラッシュをエスケープ文字として使用するのに問題があることはわかっていますが、コマンドの1行に表示できるようにどのように修正しますか?

ベストアンサー1

/エスケープを回避するには、正規表現の代わりに引用符を使用できます/

awk -F: '$6 ~ "^/home/" {print $1}' ~/Desktop/e.txt

これによりawk、しばしば{if (foo) ... }justに単純化できますfoo {...}

おすすめ記事