问题描述
我有一个文件,可以这样说:
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读入;做...;完成循环,因为对于较大的文件,读取非常慢。
我很想使用'cat'解决方案,像这样:
cat infile | echo $3" "$2","$4 >> staff.list
(我已经读过$ 0,$ 1,$ 2是输入参数...)
是否有cat解决方案,可能与 awk 或 cut 结合使用?
先谢谢您
-Linuxfluesterer
解决方法
$ awk '{printf "%s %s,%s\n",$3,$2,$5}' FS=\; infile
Robin Masters,38
Jennifer Jarau,29
James Clavell,78
或
$ awk '{print $3,$2 ",",78
sed
并不那么漂亮,但是您也可以这样做:
$ v='\([^;]*\)'
$ sed -e "s/$v;$v;$v;$v;$v/\3 \2,\5/" infile
Robin Masters,78
当然不需要cat
。