我知道我可以使用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
我正在使用Ubuntu 18:04 64位linux的PS
答案 0 :(得分:6)
您可以在bash本身中执行此操作:
var='1st line
2nd line
3rd line'
echo "${var//$'\n'/_}"
1st line_2nd line_3rd line
答案 1 :(得分:4)
请您尝试以下。
echo "$var" | paste -sd_
其中变量值为:
echo "$var"
1st line
2nd line
3rd line
答案 2 :(得分:1)
这可能对您有用(GNU sed和bash):
<<<"$var" sed '1h;1!H;$!d;x;y/\n/_/'
或:
<<<"$var" sed -z 'y/\n/_/'
答案 3 :(得分:1)
这是另一种有效的方法:
awk -v ORS="_" '1' <<<"$var"