首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重命名split命令的输出以匹配每行中的第一个单词?

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

Unix & Linux用户
提问于 2019-04-12 20:33:24
回答 2查看 213关注 0票数 0

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
split -d -a 2 -l 1 input.txt output_

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

@steeldriver建议的解决方案是:

代码语言:javascript
复制
awk -F " " '{print >$1".txt"}' input.txt
EN

回答 2

Unix & Linux用户

发布于 2019-04-12 21:19:17

使用Miller (https://github.com/johnkerl/miller)使用

代码语言:javascript
复制
mlr --nidx --ifs ' ' --repifs unsparsify then put -q 'tee > $1.".txt", $*' input.txt

您将拥有以下四个文件:

代码语言:javascript
复制
chr9q34.txt
GCM_TINF2.txt
GGTAACC_MIR4095P.txt
REACTOME_SIGNALING_BY_NOTCH1.txt
票数 1
EN

Unix & Linux用户

发布于 2019-04-13 08:37:21

请使用下面的命令实现睾丸并工作正常。

代码语言:javascript
复制
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:~$ 
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/512169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档