如何从linux中的两个连续选项卡中删除一个选项卡

时间:2013-12-12 09:46:12

标签: linux shell

我有一个文件,其中所有列都是制表符分隔的。在某些地方,连续出现两个或多个标签。所以我想保留两个或多个标签中的一个标签。输入文件如下 -

10517-akr   0   0   0   0   0   0   0   0
10518-akr       0   0   0   1   0   0   0
10515-akr   0   0   0   0   4   0   0   0
10514-akr           0   1   17  0   0   0
10513-akr   0   0   0   0   1   0   0   0

Desired out put is -

10517-akr   0   0   0   0   0   0   0   0
10518-akr   0   0   0   1   0   0   0
10515-akr   0   0   0   0   4   0   0   0
10514-akr   0   1   17  0   0   0
10513-akr   0   0   0   0   1   0   0   0

2 个答案:

答案 0 :(得分:1)

您可以使用tr 多个重复的标签挤压成一个:

tr -s '\t' < inputfile > outfile

引用man tr

   -s, --squeeze-repeats
          replace each input sequence of  a  repeated  character  that  is
          listed in SET1 with a single occurrence of that character

答案 1 :(得分:0)

使用sed将双标签替换为单个标签:

sed 's|\t\t|\t|g' inputfile > outputfile

或 - 如果您想要替换任何重复的标签:

sed 's|\t\t*|\t|g' inputfile > outputfile

请注意,并非所有版本的sed都了解\t。只需插入一个文字标签(按 Ctrl-V 然后 Tab )。