从bash脚本中的一行中提取一列

时间:2013-11-19 08:05:48

标签: bash

拥有此格式的文件:

aa: bb.cc:dd.e Text1: text
cc: aa.bb:dd.e Text2: text
dd: cc.bb:aa.e Text3: text

我想获得输出:

aa: Text1: text
cc: Text2: text
dd: Text3: text

我尝试过切割,首先获得第一列然后最后一列:

(cat file1 | cut -d' ' -f1)
(cat file1 | cut -d' ' -f3-)

如何在一个命令中执行此操作,直接提取第二列或如何使用这两个命令来获取我需要的内容? 感谢。

2 个答案:

答案 0 :(得分:2)

这种特殊情况的最简单方法:

cut -d' ' -f1,3,4

您也可以尝试范围(例如,如果您想删除第3列):

cut -d' ' -f-2,4-

答案 1 :(得分:1)

或许使用awk

awk '{print $1 " " $3 " " $4}' file1

如果它有点复杂(并且列数未知),那么你可以使用更有趣的东西:

awk '{print $1 " " substr($0, index($0,$3))}' file1

与之前一样,打印出第一列,然后从找到第三列($0)开始打印整行($3)的子串。