相关疑难解决方法(0)

具有公共字段的两个文件 - 是否可以根据另一个文件对一个文件进行排序?

假设我有两个具有共同字段的文件。我想根据在此文件中找到的字段(例如数字字段)对第一个进行排序……但我希望这种重新排序也适用于另一个文件 - 通过公共字段。

举个例子 -完全凭空抓起来;-) - 让我们拿/etc/passwd/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:::
sndiod::17055::::::
字典:*:17055:0:99999:7::
postgres:*:17055:0:99999:7:::
(……)

在 UID 上按数字对/etc/passwd 进行排序很容易:

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 / passwd文件-得到了一个用户名,场...

那么有没有办法重新排序/etc/shadow 中的行,以便用户名字段与数字排序 的用户名字段具有相同的顺序/etc/passwd

  • 是否有一个命令——sort或类似的东西——可以在该文件中的某个键之后对文件 A进行排序,并同时在两个文件共享的公共字段上对文件 …

command-line shell awk text-processing sort

2
推荐指数
1
解决办法
818
查看次数

标签 统计

awk ×1

command-line ×1

shell ×1

sort ×1

text-processing ×1