我必须将选择查询数据收集到CSV文件中。我想使用sed
命令将数据中的\n
替换为一个空格。
我正在使用这个
query | sed "s/\n/ /g" > file.csv .......
但是它不起作用。仅删除\
,同时也删除n
并添加一个空格。请提出一些建议。
答案 0 :(得分:0)
\n
是sed的特殊功能:它代表换行符。要替换文字\n
,您必须转义反斜杠:
sed 's/\\n/ /g'
请注意,我已使用single quotes。如果您使用double quotes,则反斜杠在后面带有$
,`
,"
,\
或换行符(即{ {1}}仍然是"\n"
,但是\n
会变成"\\n"
。
由于我们要让sed看到\n
,因此我们必须使用其中之一:
\\n
–第一个sed "s/\\\n/ /g"
变成\\
,而\
不变,导致\n
\\n
–两对sed "s/\\\\n/ /g"
都被简化为\\
,并且sed也获得了\
但是单引号更简单:
\\n
从对该问题的评论中可以看出,sed与删除反斜杠无关。 OP尝试过
$ sed 's/\\n/ /g' <<< 'my\nname\nis\nrohinee'
my name is rohinee
但反斜杠被外壳删除:
echo my\nname\nis | sed 's/\n/ /g'
因此,即使使用了正确的$ echo my\nname\nis
mynnamenis
,sed也不会找到任何匹配项。正确的方法是
\\n
答案 1 :(得分:0)