如何重复特定列中的值?

时间:2019-06-24 19:57:12

标签: bash

我想重复一些与前几列相对应的值。

我有这个输入:

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

1 个答案:

答案 0 :(得分:3)

我认为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