我想重复一些与前几列相对应的值。
我有这个输入:
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
答案 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