如何重命名 split 命令的输出以匹配每行中的第一个单词?

如何重命名 split 命令的输出以匹配每行中的第一个单词?

我有 input.txt 文件(有 4 行),如下所示:

GGTAACC_MIR4095P   USP7    MKRN1   TSHZ3   EIF2C1  SRSF8   CAMK2G      ARID4B
GCM_TINF2            MORF4L1 ABHD16A ZNF274  C7orf43 SNX33
chr9q34         MRPL41  OR5C1   LOC138159       GBGT1
REACTOME_SIGNALING_BY_NOTCH1            HDAC6   HDAC5   MAMLD1 

如何将此文件拆分为 4 个文件(我的原始文件有 39 行),以便我获得 4 个文件,每个文件均由一行中的第一个单词命名: GGTAACC_MIR4095P.txt GCM_TINF2.txt chr9q34.txt REACTOME_SIGNALING_BY_NOTCH1.txt

到目前为止我尝试过的是:

split -d -a 2 -l 1 input.txt output_

这与我需要的解决方案相去甚远。

根据@steeldriver的建议,解决方案是:

awk -F " " '{print >$1".txt"}' input.txt

答案1

与米勒 (https://github.com/johnkerl/miller) 使用

mlr --nidx --ifs ' ' --repifs unsparsify then put -q 'tee > $1.".txt", $*' input.txt

你将有这四个文件:

chr9q34.txt
GCM_TINF2.txt
GGTAACC_MIR4095P.txt
REACTOME_SIGNALING_BY_NOTCH1.txt

答案2

请使用以下命令来实现睾丸并且工作正常

count=`wc -l filename| awk '{print $1}'`
praveen@praveen:~$
praveen@praveen:~$ for ((i=1;i<=$count;i++)); do j=`sed -n ''$i'p' filename`;awk -v i="$i" 'NR == i {print $0}' filename >$j.txt;done
praveen@praveen:~$ 

相关内容