【发布时间】:2020-06-29 18:17:06
【问题描述】:
我知道我可以使用 sed(在文件中)使用空格替换换行符
sed ':a;N;$!ba;s/\n/ /g' file.txt
但是我如何在 bash 变量中用下划线“_”替换换行符?
我尝试用空格替换它来测试它,但没有用,请参阅下面我使用的内容。
#gets rid of newline and replace with space to get station name on one line
station=$(
<<<"${station_tmp}"\
echo $station_tmp | sed ':a;N;$!ba;s/\n/ /g'
)
变量 station_tmp 看起来像:
1st line
2nd line
3rd line
我正在尝试用下划线“_”替换换行符并让它看起来像:
1st line_2nd line_3rd line
PS 我用的是 Ubuntu 18:04 64bit linux
【问题讨论】:
-
sed ':a;N;$!ba;s/\n/ /g' <<< "$station_tmp"? -
使用纯 Bash,您可以执行
var=${var/^M/_},其中^M键入为Ctrl-vCtrl-m。 -
@accdias control-M 不是 UNIX 中的换行符 - 它是
\r(回车)而不是\n(UNIX 中的换行符又名换行符)。 -
@EdMorton,永远正确。 :-)