【问题标题】:Replace \n(new line) with space in bash用 bash 中的空格替换 \n(new line)
【发布时间】:2017-01-05 01:03:06
【问题描述】:

我正在从 db 将一些 sql 查询读入一个变量,它包含换行符 (\n)。我想用空格替换 \n (新行)。我尝试了互联网上提供的解决方案,但未能实现我想要的。这是尝试过的:

strr="my\nname\nis\nxxxx";
nw_strr=`echo $strr | tr '\n' ' '`;
echo $nw_strr;

我想要的输出是“我的名字是 xxxx”,但我得到的是“my\nname\nis\nxxxx”。我还尝试了互联网上提供的其他解决方案,但没有运气:

nw_strr=`echo $strr | sed ':a;N;$!ba;s/\n/ /g'`;

我在做什么吗?

【问题讨论】:

  • 对于初学者来说,$strr 不包含换行符,它包含文字反斜杠-N 序列。尝试strr=$'my\nname\nis\nxxxx' 以获得正确的换行符。

标签: bash sed tr


【解决方案1】:

使用 bash:

用空格替换所有换行符:

nw_strr="${strr//$'\n'/ }"

用空格替换所有字符串\n

nw_strr="${strr//\\n/ }"

【讨论】:

  • 对我有用,但正如 John Kugelman 在上面的评论中提到的,这必须使用包含实际换行符的 $strr 进行测试。例如strr=$'my\nname\nis\nxxxx'.
  • 第二个对我有用。我猜所有\n 在从mysql 读取时都以字符串形式出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多