Linux
從文件中將字元串/單詞插入變數並連接分隔符而不是空格/s
我們有以下文件(它是範例)
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/,$//')