2014-12-30 41 views
1

我有一个文件描述细菌taxanomy:重复的第一个字和独立的标签

Yersinia aldovae  1 
Yersinia frederiksenii 1 
Yersinia pestis 2 
Zymomonas mobilis 1 

我想打一个新列,以保持细菌名称的第一个字,如:

Yersinia Yersinia aldovae 1 
Yersinia Yersinia frederiksenii 1 
Yersinia Yersinia pestis 2 
Zymomonas Zymomonas mobilis 1 

有人能告诉我如何使用sed或awk来完成这项工作吗?谢谢!

回答

1

打印第一列和整行。

awk '{printf("%s\t%s\n", $1, $0)}' filename > new_filename 
+2

这应该会产生语法错误。 ITYM'' {printf(“%s \ t%s \ n”,$ 1,$ 0)}''但是简单的打印就足够了 –

+0

@EdMorton,你说得对。谢谢你指出。 – falsetru

4

随着

awk '{ print $1 "\t" $0 }' file 

或者是:

awk -v OFS="\t" '{ print $1, $0 }' file 

随着

sed 's/\([^ ]*\) .*/\1\t&/' file 

或:

sed 's/[^ ]*/&\t&/' file 
+0

又一个'awk'$ 1 = $ 1“\ t”$ 1'' –

+0

非常感谢!这非常有用! – Colin

2

您可以使用AWK:

awk '{print $1 "\t" $0}' source_file > dest_file 
+0

非常感谢!这也是工作! – Colin

2

随着AWK

awk '$0=$1"\t"$0' File 

变化"line""first column", tab & "line"

随着sed的

sed -r 's/(\S+).*/\1\t&/' File 

(\S+) => 1或多个非空格字符,这将是第一个字。将整行更改为"first word", tab and the line itself (&)