共通フィールドを持つ2つのファイルがあるとします。このファイル内のフィールド(たとえば、数値フィールド)に基づいて最初のファイルをソートしたいと思います。しかし、この並べ替えが通常のフィールドを介して他のファイルでも機能するようにしたいと思います。
例えば--完全虚空でそれをつかむ;-) - それを得る/etc/パスワードそして/etc/shadow:
/etc/passwd: (...) sshd:x:124:65534::/var/run/sshd:/usr/sbin/nologin sndiod:x:999:29::/var/lib/sndiod:/usr/sbin/nologin dictd:x:125:135:Dictd サーバー,,,::var/lib/dictd:/bin/false postgres:x:126:136:PostgreSQL 管理者,,,:/var/lib/postgresql:/bin/bash (...)
/etc/shadow: (...) SSHD:*:17055:0:99999:7::: sdiod:!:17055:::::: 辞書:*:17055:0:99999:7::: ポストグレス:*:17055:0:99999:7::: (...)
種類/etc/パスワードUIDの数字は簡単です。
sort -n -t: -k3 /etc/passwd > pw
上記の行の結果は次のとおりです。
/etc/passwd: (...) sshd:x:124:65534::/var/run/sshd:/usr/sbin/nologin dictd:x:125:135:Dictd サーバー,,,::var/lib/dictd:/bin/false postgres:x:126:136:PostgreSQL 管理者,,,:/var/lib/postgresql:/bin/bash sndiod:x:999:29::/var/lib/sndiod:/usr/sbin/nologin (...)
しかし、/etc/shadowするいいえ後で並べ替えることができる数値UIDフィールドがありますが...はい。/etc/パスワード- ユーザー名フィールドがあります...
行を並べ替える方法はありますか?/etc/shadowこのように、ユーザー名フィールドの順序は、次のユーザー名フィールドの順序と同じです。数値順に並べ替え /etc/パスワード?
sort
並べ替えることができるコマンドなどがありますか?ファイルAこのファイルの特定のキーの後にも並べ替え文書B両方のファイルが共有する共通フィールドにありますか?- または、以下を使用してソートできる適切な2段階のプロセス(コマンド、sed / AWK / Perlスクリプトなど)がありますか?ファイルA再注文文書B共通領域を通過したら?
ベストアンサー1
ファイルをリンクし、マージされたファイルを並べ替え、不要な列を削除します。
この場合、field1 of は field1 of に/etc/passwd
関連付けられ、フィールド区切り文字として機能します。/etc/shadow
:
join -t : -1 1 -2 1 /etc/passwd /etc/shadow |
sort -t : -k 3,3n |
cut -d : -f 1,8-