Unix 重复第一个单词并按制表符分隔

Unix 重复第一个单词并按制表符分隔,unix,replace,awk,sed,Unix,Replace,Awk,Sed,我有一个描述细菌分类法的文件: 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 Zym

我有一个描述细菌分类法的文件:

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来完成这项工作吗?谢谢大家!

打印第一列和整行

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

打印第一列和整行

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

或许:

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

或:

与:

或许:

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

或:

您可以使用awk:

awk '{print $1 "\t" $0}' source_file > dest_file
您可以使用awk:

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

使用awk

awk '$0=$1"\t"$0' File
sed -r 's/(\S+).*/\1\t&/' File
“行”
更改为
“第一列”,选项卡和“行”

使用sedsed

awk '$0=$1"\t"$0' File
sed -r 's/(\S+).*/\1\t&/' File

(\S+)
=>1个或多个非空格字符,它们将是第一个单词。将整行更改为“第一个单词”,并使用awk将行本身(&)更改为:

awk '$0=$1"\t"$0' File
sed -r 's/(\S+).*/\1\t&/' File
“行”
更改为
“第一列”,选项卡和“行”

使用sedsed

awk '$0=$1"\t"$0' File
sed -r 's/(\S+).*/\1\t&/' File

(\S+)
=>1个或多个非空格字符,它们将是第一个单词。将整行更改为
“first word”,并将行本身(&)

再更改一行
awk'$1=$1”\t'$1'
会产生语法错误的
awk'$1=$1”\t'$1'
。ITYM
“{printf(“%s\t%s\n”,$1,$0)}”
但是一个简单的打印就足够了,应该会产生语法错误。ITYM
“{printf(“%s\t%s\n”,$1,$0)}”
但是一个简单的打印就足够了,谢谢!这也行!谢谢!这也行!