Linux: 将两个子字符串连接到一个新行,来自用 cat 读取的 infile

Linux: concatenate two substrings to a new line from infile read with cat

我有一个 infile,比方说:

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

但我不会使用 'while read in; do ...; done' 循环,因为对于更大的文件,读取速度非常非常慢。

我希望有一个 'cat' 的解决方案,像这样:

cat infile | echo " "", " >> staff.list

(我看过$0,$1,$2是输入参数...)

是否有猫的解决方案,也许与 awkcut 结合使用?

提前谢谢你,

-Linuxfluesterer

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

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

它没有 sed 漂亮,但你也可以这样做:

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

当然不需要cat