如何使用sed命令将\ n替换为空格?

时间:2018-08-09 16:54:40

标签: sed

我必须将选择查询数据收集到CSV文件中。我想使用sed命令将数据中的\n替换为一个空格。

我正在使用这个

query | sed "s/\n/ /g" > file.csv .......

但是它不起作用。仅删除\,同时也删除n并添加一个空格。请提出一些建议。

2 个答案:

答案 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)

您要用空格替换换行符,而不必使用GET /_search { "query": { "exists" : { "field" : "price" } } }

使用tr

sed