簡體   English   中英

在bash變量中用下划線'_'替換換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM