[英]Replace a newline with underscore '_' in bash variable
我知道我可以使用 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
您可以在 bash 本身中执行此操作:
var='1st line
2nd line
3rd line'
echo "${var//$'\n'/_}"
1st line_2nd line_3rd line
你能不能试试以下。
echo "$var" | paste -sd_
其中变量值是:
echo "$var"
1st line
2nd line
3rd line
这可能对您有用(GNU sed 和 bash):
<<<"$var" sed '1h;1!H;$!d;x;y/\n/_/'
或者:
<<<"$var" sed -z 'y/\n/_/'
这是另一个有效的:
awk -v ORS="_" '1' <<<"$var"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.