Linux

從文件中將字元串/單詞插入變數並連接分隔符而不是空格/s

  • August 27, 2019

我們有以下文件(它是範例)

more machines.txt


Node23
Node34
Node12
Node95
Node23

我們想將所有節點的列表插入到變數中,並用“,”分隔符連接每個節點

預期結果範例(無空格/秒)

Node23,Node34,Node12,Node95,Node23

我們試試這個

LIST=` sed -e 's/\s\+/,/g'  machines.txt ` 

但是我們這種方法沒有加入機器之間的分隔符,我們得到

echo $LIST

Node23 Node34 Node12 Node95 Node23

在變數中獲取 csv 列表的正確方法是什麼(這種語法應該在 bash 腳本中)

paste

list=$(paste -sd, < machines.txt)

sed命令預設逐行計算。因此,您的命令不會替換換行符。您可以通過執行來確認這一點:

echo "$LIST"

這將表明您實際上沒有對原始文件內容進行任何操作。

由於您只替換一個字元,我會推薦該tr工具作為sed. 生成的命令如下所示:

LIST=$(tr '\n' ',' < machines.txt) 

基本上這條線意味著我們想\n用逗號替換換行符,

如果有尾隨逗號,您還可以添加sed命令以刪除最後的逗號。

LIST=$(tr '\n' ',' < machines.txt | sed 's/,$//')

引用自:https://unix.stackexchange.com/questions/537705