How do I sort a colon or comma delimited file?
-
Also see: sort - sort lines of text files
-t, --field-separator=SEP use SEP instead of non-blank to blank transition
-k, --key=KEYDEF sort via a key; KEYDEF gives location and type
The syntax is as follows:
$ sort -t{delimiter} -k{n,m} filename
:
- Delimiter.
n
- The field.
m
- The character position.The delimiter in the demo is a colon but it can be a comma, space or any other delimiter.
Working on the following sample file contents:
pipewire:x:991:985:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin saslauth:x:990:76:Saslauthd user:/run/saslauthd:/sbin/nologin dnsmasq:x:984:984:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin clevis:x:983:982:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin cockpit-ws:x:982:980:User for cockpit-ws:/nonexisting:/sbin/nologin sssd:x:981:979:User for sssd:/:/sbin/nologin colord:x:980:978:User for colord:/var/lib/colord:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin gnome-initial-setup:x:979:977::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
To sort the file by UID.
$ sort -t: -k3n demo1 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin gnome-initial-setup:x:979:977::/run/gnome-initial-setup/:/sbin/nologin colord:x:980:978:User for colord:/var/lib/colord:/sbin/nologin sssd:x:981:979:User for sssd:/:/sbin/nologin cockpit-ws:x:982:980:User for cockpit-ws:/nonexisting:/sbin/nologin clevis:x:983:982:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin dnsmasq:x:984:984:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin saslauth:x:990:76:Saslauthd user:/run/saslauthd:/sbin/nologin pipewire:x:991:985:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
Sort by the Group ID and then the User ID. Demonstrates the use of using the key twice. The
-n
mean numerical.$ sort -t: -k4n -k3n demo1
Perform a unique sort using the
-u
options. This performs a unique sort on the GID.$ sort -t: -k4n -u demo1
© Lightnetics 2024