linux:某列转为多行

现有文件test如下所示:

预期转换为如下所示:

如果是用R的话,可以通过以下命令实现:

library(dplyr)
co <-fread("test",sep="\t",header = F,check.names = F)
co1=co %>% as_tibble() %>% separate_rows(V6, sep = ",")

如果是bash的话,则可以通过以下命令实现:

#逐行读取test文件
while IFS= read -r line
do
need1=`echo "$line" | awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5}'` #提取每行的第一列到第五列
need2=`echo "$line" | awk '{print $6}' | tr "," "\n"` #提取每行的第六列并转为多行
num=`echo "$need2" | wc | awk '{print $1}'` #统计need2变量共有多少行
need3=`for (( c=1; c<=num; c++)) ; do echo "$need1" ; done` #重复打印need1变量num次
echo "$need3" >> file1 
echo "$need2" >> file2
done < test

paste file1 file2 > file3 #合并
posted @   橙子牛奶糖  阅读(182)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2019-06-29 全基因组关联分析(GWAS):为何我的QQ图那么飘
点击右上角即可分享
微信分享提示