2017-08-03 102 views
0

我的目標是從awk打印命令中輸出(同時保持格式)並使用它來替換文件中的某些文本。
目前即時通訊使用:awk打印輸出爲變量/數組不保持格式化

declare -a mach=($(awk -F',' 'NR>1{print NR-1, $8}' mag_grad.csv)) 

這給:

1 0.77492 
2 0.18022 
3 0.29596 
4 0.5229 

等等

我試圖用sed來查找並在文件中有數組$替換文本具有相同格式的2列。

sed -i s/"mach data"/"${mach[*]}"/g nodedata.txt 

然而這樣做的結果是

1 0.77492 2 0.18022 3 0.29596 4 0.5229 ....... 

我如何能保留格式的任何想法,以取代馬赫數據?

乾杯

+1

它是什麼,你想幹什麼?你想在輸出中保留換行符嗎?如果是這樣,爲什麼你使用一個數組將拆分所有內容並刪除所有空格? –

+0

我對任何一種腳本都很陌生,所以我很抱歉如果我使用錯誤的東西。 是的我想保留在輸出中的新行,認爲我必須將其設置爲一個數組,而不是一個變量。然而,無論何時我嘗試使用sed與mach作爲變量而不是數組,它不會替換具有正確數據的單詞,只是單詞「mach」 –

回答

1

嘗試:

mach=$(awk -F',' 'NR>1{print NR-1, $8}' mag_grad.csv) 
sed -i "s/\x22mach data\x22/${mach//$'\n'/\\n}/" nodedata.txt 
+0

嘗試過這一點,它只是用mach代替「mach數據」,而不是變量mach unfortunatley –

+0

我會用這個perl:替換文本中的換行符沒有問題:'perl -i -pse'/ mach data/$ data/g' - -data =「$ mach」filename' –