【发布时间】:2015-06-16 12:33:30
【问题描述】:
我有一个 .txt 文件,其中包含
Name: Dean AGE: 23 Hometown: Chicago
Name: Mary AGE: 68 hometown: New York
Name: Lisa age: 36 Hometown: Los angeles
Name: Greg Age: 18 hometown: London
我将如何使用 sed、awk 或 tr "Name:"、"Age:" 和 "Hometown:" 所以结果是:
Dean 23 Chicago
Mary 68 New York
Lisa 36 Los angeles
Greg 18 London
我唯一能想到的就是遍历所有字段并将它们打印出来,例如:
awk '{for (i=1;i<=NF;i++) {if ($i !~/:/) {print i,$i}}}'
但是这给了我结果:
Dean
23
Chicago
Mary
68
New
York
Lisa
36
Los
angeles
Greg
18
London
如您所见,它在自己的行上打印出每个字段,并分解纽约和纽约,以及洛杉矶和洛杉矶。
我的另一个想法是一个接一个地 sed “姓名:”、“年龄:”和“家乡:”,所有这些都使用不同的命令,将它们替换为空,这将起作用。例如:
sed 's/Name://g'
但是,有没有办法让它不区分大小写,因为有“年龄:”、“年龄:”和“年龄:”
【问题讨论】:
-
文件是否总是按顺序包含名称、年龄和家乡,之前或中间没有其他内容?
-
它总是这样。然而,在城市之后还有其他元素。为了简洁起见,我只是把它们删掉了。