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