Linux:将两个子字符串连接到用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读入;做...;完成循环,因为对于较大的文件,读取非常慢。

我很想使用'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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...