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
    

Log in to reply
 

© Lightnetics 2024