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
解决方案
我认为 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
推荐阅读
- llvm - 当前主机 cpu 的 llc/clang 精确 -march 目标
- azure - 是否可以删除托管在 Azure 上的 Web 应用程序上的弱密码或编辑注册表设置?
- python - 从程序将代码写入文件时,如何让我的字典开始一个新行?
- django - django restful api,在 url 中有嵌套对象
- r - 如何避免predict.gam中的“数据错误[[txt]]:下标越界”错误?
- javascript - 有没有办法使用 Linux Ubuntu 20.04 LTS 打开代码目录?
- button - 一个正方形可以有两个按钮吗?
- javascript - 有没有比较javascript中的值的方法?
- json - 如何在 scala 中获取 json 字符串的深层元素?
- c# - 是否可以使用 C# 可选参数作为变量?