Linux: объединить две подстроки в новую строку из файла, прочитанного с помощью cat

У меня есть файл с, скажем:

01;Masters;Robin;Atlanta;38
02;Jarau;Jennifer;Washington;29
03;Clavell;James;New York;78
...

Я хочу создать вывод, который выглядит так:

Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

Но я НЕ буду использовать 'при чтении; делать ...; done», потому что чтение больших файлов происходит очень и очень медленно.

Я хотел бы иметь решение с «кошкой», например:

cat infile | echo $3" "$2", "$4 >> staff.list

(Я читал, что $0, $1, $2 являются входными параметрами...)

Есть ли решение с кошкой, возможно, в сочетании с awk или cut?

Заранее спасибо,

-LinuxFluesterer


person Linuxfluesterer    schedule 28.09.2020    source источник


Ответы (1)


$ awk '{printf "%s %s, %s\n", $3, $2, $5}' FS=\; infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

or

$ awk '{print $3, $2 ",", $5}' FS=\; infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

Это не так красиво с sed, но вы также можете сделать:

$ v='\([^;]*\)'
$ sed -e "s/$v;$v;$v;$v;$v/\3 \2, \5/" infile
Robin Masters, 38
Jennifer Jarau, 29
James Clavell, 78

cat точно не нужен.

person William Pursell    schedule 28.09.2020