Bash:奇怪的回声行为

时间:2013-06-14 12:53:30

标签: 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

此行生成以下输出:

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

那里不应该有任何\ n因为我在我打印的每一个变量中都有一个“sed”s / \ n // g“”。

1 个答案:

答案 0 :(得分:1)

输入

foo
bar

sed运行字符串foobar上的表达式,而不是foo\nbar\n

因此,

sed -e 's/\n//g'不会替换任何换行符。

要删除换行符,您可以通过tr -d '\n'管道或使用bash变量展开"${myvariable//$'\n'/}"