首页 > 解决方案 > 如何重复特定列中的值?

问题描述

我想重复一些值对应于前面的一些列。

我有这个输入:

2 miR-5
3 miR-10
1 miR-4
4 miR-6

我想要这个输出:

miR-5
miR-5
miR-10
miR-10
miR-10
miR-4
miR-6
miR-6
miR-6
miR-6

标签: bash

解决方案


我认为 bash 对于这个任务来说是错误的语言,它没有针对文本操作进行优化,它最适合你想要生成一些进程或操作文件等的任务。在大多数情况下,简单的文本操作任务可以用 awk 完成。以下为您的输入文件生成所需的输出:

$ cat file
2 miR-5
3 miR-10
1 miR-4
4 miR-6

$ awk '{for (i=1; i<=$1; i++) print $2}' file
miR-5
miR-5
miR-10
miR-10
miR-10
miR-4
miR-6
miR-6
miR-6
miR-6

为了问题中标签的完整性,以下是您在 bash 中的操作方式:

#!/bin/bash
while read -r num rest
do
  for ((i=1;i<=num;i++))
  do
     printf '%s\n' "$rest"
  done
done < file

推荐阅读