如何将换行分隔的SRR_Acc_list.txt内容转为SAMPLES列表?
解决方法
下面提供几种简单的命令行实现方式,帮你把换行分隔的文本转换成目标格式:
方法1:使用sed命令
一行命令即可完成转换:
echo 'SAMPLES = ["'$(sed ':a;N;$!ba;s/\n/", "/g' ./input/SRR_Acc_list.txt)'"]'
原理说明
:a;N;$!ba:将文件所有内容读入一个缓冲区,把多行合并成一个整体处理s/\n/", "/g:把所有换行符替换成", "- 最后用
echo拼接成SAMPLES = ["..."]的格式
方法2:使用awk命令
如果更习惯用awk,也可以这样写:
echo 'SAMPLES = ["'$(awk '{printf "%s\", \"", $0}' ./input/SRR_Acc_list.txt | sed 's/", "$//')'"]'
原理说明
awk '{printf "%s\", \"", $0}':逐行输出每个样本ID并追加", "sed 's/", "$//':去掉最后一行多余的", "- 再通过
echo包裹成目标格式
方法3:纯Bash脚本(无额外工具依赖)
如果不想依赖sed/awk,用纯Bash循环也能实现:
#!/bin/bash result='SAMPLES = ["' while IFS= read -r line; do result+="$line\", \"" done < ./input/SRR_Acc_list.txt # 移除末尾多余的 ", " 并闭合括号 result="${result%\", \"}']" echo "$result"
原理说明
- 逐行读取文件内容,拼接成带
", "分隔的字符串 - 最后修正末尾的多余字符,补全列表格式
你之前用的tr -d '\n'只是单纯删除换行符,没有添加引号和分隔符,所以无法得到预期的列表结构。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

