Перестановка слов в столбце

Необходимо из файла взять строчку такого вида:

muhaz:x:6541:113:AhmmedMuhaz Mohammed Kunhi Mulleria:/home/students/muhaz:/bin/bash

и на выходе получить вот такую:

muhaz:x:6541:113:Mulleria Mohammed Kunhi AhmmedMuhaz:/home/students/muhaz:/bin/bash

Т.е. конкретно в пятом столбце первое и последнее слово поменять местами.


Ответы (1 шт):

Автор решения: Ainar-G

Это можно сделать с помощью программы на POSIX awk:

BEGIN {
    FS = ":";
    OFS = ":";
}

{
    n = split($5, a, " ");

    t = a[1];
    a[1] = a[n];
    a[n] = t;

    $5 = a[1];
    for (i = 2; i <= n; i++) {
        $5 = $5 " " a[i];
    }

    print;
}
$ awk -f ./tmp.awk ./tmp.txt 
muhaz:x:6541:113:Mulleria Mohammed Kunhi AhmmedMuhaz:/home/students/muhaz:/bin/bash
→ Ссылка