繁体   English   中英

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; 做 ...; done' 循环,因为读取较大的文件非常非常慢。

我很想有一个“猫”的解决方案,如下所示:

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

(我读过 $0、$1、$2 是输入参数...)

cat 是否有解决方案,可能与awkcut结合使用?

先感谢您,

-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 ",", $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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM