我正在尝试将linux命令的文本输出粘贴到csv文件的单个单元格中。无论我如何尝试对引号进行转义,csv文件似乎都没有注册换行符。
例如,如果以下命令之一的输出是:
155 C T
2518 T C
它在csv单元中的打印方式为:
155 C T 2518 T C
for filename in "$1"/*JGI*.vcf; do
counter=$((counter + 1))
depth_score="$(samtools depth "${filename%.*}.bam" | python depth.py)"
variant_array="$(bcftools query -f '%POS %REF %ALT\n' "$filename")"
column_name="$(basename "$filename")"
echo "$counter/$total_colonies" # echo current/total
echo "$variant_array"
echo ""$variant_array""
echo "$column_name, "$variant_array", $depth_score" >> output.csv
done
这是for循环,给了我一些错误。
$variant_array
的结果就是问题所在。
我上面有两个打印日志,我在这些日志中写入output.csv以查看发生了什么情况。
"$variant_array"
产生了预期的行为,但是由于某些原因,当我在另一组引号中回显该问题并将其写入csv文件时,它会忽略换行符...
答案 0 :(得分:2)
行情不会以这种方式逃脱...那么以下内容对您有用吗?
echo '"'"$variant_array"'"'
echo "$column_name", '"'"$variant_array"'"', "$depth_score" >> output.csv
这是转义引号的另一种形式:
echo \""$variant_array"\"
echo "$column_name", \""$variant_array"\", "$depth_score" >> output.csv
这是另一个想法:
echo "\"$variant_array\""
echo "$column_name, \"$variant_array\", $depth_score" >> output.csv
答案 1 :(得分:0)
问题在于$variant_array
在另一组引号中不是。完全没有报价。
替换:
echo "$column_name, "$variant_array", $depth_score" >> output.csv
具有:
echo "$column_name", "$variant_array", "$depth_score" >> output.csv
或更简单的是:
echo "$column_name, $variant_array, $depth_score" >> output.csv