Bash:奇怪的回声行为

Bash:奇怪的回声行为,bash,csv,echo,Bash,Csv,Echo,我试图为程序自动生成的日志创建一个解析器,而解析器中生成csv的部分开始出现奇怪的行为。 让人疯狂的部分是: echo "$COMMAND_3_NAME,,$TIME_1_START,$TIME_1_END,$DIFF_1,,$TIME_2_START,$TIME_2_END,$DIFF_2,,$TIME_3_START,$TIME_3_END,$DIFF_3,,$TIME_USR_START,$TIME_USR_END,$DIFF_USR" >> $OUT_NAME 此行将生成以

我试图为程序自动生成的日志创建一个解析器,而解析器中生成csv的部分开始出现奇怪的行为。 让人疯狂的部分是:

echo "$COMMAND_3_NAME,,$TIME_1_START,$TIME_1_END,$DIFF_1,,$TIME_2_START,$TIME_2_END,$DIFF_2,,$TIME_3_START,$TIME_3_END,$DIFF_3,,$TIME_USR_START,$TIME_USR_END,$DIFF_USR" >> $OUT_NAME
此行将生成以下输出:

Command_3,,458.7
484.0,483.9
507.5,-458.7
967.9
507.5,,271.8
271.8,271.8
271.8,-271.8
543.6
271.8,,,,,,967.8
967.8,967.8
967.8,-967.8
1935.6
967.8
其中不应该有任何变量,因为我在打印的每个变量中都有一个“sed”s/\n//g“

foo
bar
sed在字符串
foo
bar
上运行表达式,而不是
foo\n
bar\n

sed-e的/\n//g'
因此不会替换任何换行符


要删除换行符,可以通过
tr-d'\n'
或使用bash变量扩展
“${myvariable/$'\n'/}”

将您的sed版本转换为换行符“\n”,还是将其视为两个文字字符“\”和“n”?最好尝试一下
tr-d'\n'
我看不到每行末尾的“,”。你把它们从你的帖子中漏掉了,或者回声忽略了它们?应该没有新行。我发布的是程序的精确输出,这不是问题所在。问题是echo正在将“,”替换为“\n”。问题发生后,我添加了sed行。它没有将
替换为
\n
,因为有几个
没有换行。更可能的是,变量本身包含换行符
printf“%q\n”“$TIME\u 1\u START”
可能会显示
$'458.7\n484.0'
。若要删除它们,请参阅答案。那么,将要到哪里去?再次读取回音线并计算,s。两者中都有16个逗号。