2017-08-03 59 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' –