ユーザー名に基づいて/etc/passwdからgecosを抽出するsedソリューション

ユーザー名に基づいて/etc/passwdからgecosを抽出するsedソリューション

私がやっていることにsedソリューションが必要です。/etc/passwdAIXユーザーID(ユーザー名)に基づいてファイルから名前を抽出する必要があります。これまで私はこれを持っていますが、うまくいきません。可能なすべてのソリューションを高く評価します。

sed "/^Ravi02/s/\(^.\{21\}\).\([a-zA-Z]\{50\}\)/\1/p" /export/home/Ravi02/passwd

以下は、passwdファイルのいくつかの例のエントリです。

Jose01:!:49030:49082:Freeman, Joseph III:/export/home/p1jxf01:/bin/ksh
Ravi02:!:37242:1580:Dronavalli, Ravi:/export/home/j1rxd02:/bin/ksh
Beny01:!:49335:49040:Young, Ben:/export/home/p1bmy01:/bin/ksh

IDに基づいて名前を抽出する必要があります。 IDが「Jose01」の場合は「Freeman、Joseph III」を取得し、IDが「Ravi02」の場合は「Dronavalli、Ravi」をインポートする必要があります。

ベストアンサー1

ファイルは区切りファイルpasswdです:。したがって、最初のフィールドは常にユーザー名などです。

(注:man 5 passwd説明フィールド)。

この場合、ユーザー名が与えられると、GECOS フィールドが必要です。

これできる完了しましたが、sed他のツールがより良いかもしれません。 awk簡単に:

awk -F: '$1 == "Ravi02" { print $5 }' /etc/passwd

おすすめ記事