次のような/ 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行にリストできるようにするにはどうすれば修正できますか?
cat e.txt | grepホーム| cut -d ":" -f 1
—
Arpit Agarwal 2017年
すべてのユーザーのUIDが1000であるため、少し注意が必要かもしれません。
—
StrongBad 2017年
@ArpitAgarwal
—
NieDzejkob 2017年
grep home e.txt | cut -d ":" -f 1
。UUOCアワードおめでとうございます。ただし、これは良い解決策ではありません。デーモンにちなんで名付けられた別のユーザーの下で実行されるサービス「homebackups」がある場合はどうなりますか?それは誤検知です。
@Philippos re「キャットアンドパイプでツールにパイプすることはほとんど意味がありません[ファイル名を引数として指定できます]-
—
David Spillett
cat > tool
左から右へのフローを維持することで明瞭性を向上できるため、通常はそのようなコマンドラインのバリアントを使用しますパイプチェーンの入出力処理の。それはあるが、ほとんど常に最小限ので、あまり効率的。また、インタラクティブに実行する場合に関連性があり便利な進行状況バーを追加します(インストールされcat
ているpv
場合は置き換えてください)。
cat
とのパイプのようなツールにawk
かsed
、彼らは、引数としてファイル名を与えることができるように、など。