如何在[文本文件]中为每一行创建一个以第一列命名的新文件,并包含每行的所有剩余列?

时间:2016-05-12 22:54:26

标签: search text awk sed grep

我有一个类似以下的文件

列由制表符分隔

    Group1  name1:ENSG0365  name4:ENSMU0000196  name2:ENSMU00001826
    Group2  name2:ENS000132622  name4:ENSUS00074793 
    Group3  name3:ENSFP000844   name1:ENSMU000025 

我想要每行的文件列表,以第1列(Group1,Group2等)命名并且看起来像这样

NAME1:ENSG0365
NAME4:ENSMU0000196
mouse2:ENSMU00001826

我不知道哪个工具更适合这项任务。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

使用bash 4:

while read -r name rest; do echo "$rest" >"$name"; done </path/to/your/file

更新

while read -r name rest; do printf "%s\n" $rest >"$name"; done < /path/to/your/file

答案 1 :(得分:1)

perl -n -e '@x=split;open(F,">".shift(@x));$,="\n";print F @x' < groups.txt

大胆猜测评论中的含义,您可以尝试:

perl -n -e '@x=split /\t/;open(F,">".shift(@x));$,="\n";print F @x' < groups.txt