bash - 循环通过制表符分隔的文件
问题描述
我有一个要求,我必须在其中有一个“制表符分隔文件”,它有三列。我在这里复制了六行示例
file_id file_name sample_id
30a6e42d 2f601196 TARGET-20-PABLDZ-04A
25fe4062 3ea58509 TARGET-20-PABLDZ-04A
839d38ec 5c971b6e TARGET-20-PABLDZ-04A
79f40af8 4a2ace7c TARGET-20-PADYIR-09A
afb79159 fea2f740 TARGET-20-PADYIR-09A
177500c8 1eae7be6 TARGET-20-PADYIR-09A
每个 sample_id 对应 3 个 file_id
我的要求是遍历所有 sample_id,并找到所有三个 file_id
对于每个 sample_id
cd <file_id>
(文件夹名称与 file_id 相同)。该<file_id>
文件夹与选项卡单独文件所在的位置相同。获取文件名(该文件存在于<file_id>
文件夹中)
cp 文件名到一个目录
谢谢你的帮助
解决方案
你可以试试
while IFS=$'\t' read -r column1 column2 column3 ; do
printf "%b\n" "column1<${column1}>"
printf "%b\n" "column2<${column2}>"
printf "%b\n" "column3<${column3}>"
done < "myfile"
IFS=$'\t' 是告诉 bash 制表符是分隔符
推荐阅读
- java - 使用SDK清除Azure门户中定义的容器的现有策略后,如何上传新创建的sharedAccessPolicy?
- ios - 将 segue 动画更改为“显示”,但它卡在“模态”中
- javascript - JavaScript 将前 5 个字符替换为 *
- ruby - 简单的程序,但非常卡住——Ruby 中的循环
- raspberry-pi3 - 尝试使用 DFRobot 红外摄像头寻找红外灯
- c++ - qt.bluetooth:虚拟后端运行。Qt 蓝牙模块在 Raspbian 上不起作用
- functional-programming - 函数式编程中的并行函数组合
- vue.js - 如何使用 vue svg loader 继承 svg 的 css 属性
- python - 为什么这个 de Bruijn 代码的最后几位总是返回 0
- docker - 是否可以从 Azure Pipelines 容器作业中运行 Docker 命令?