[英]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 是否有解决方案,可能与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 ",", $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.