2013-07-17 93 views
2

我想將從文件中取出的一些數據寫入文件的最後一行(而不是新行)。我正在使用以下腳本。如何在bash腳本中寫入文件的特定行?

#!/bin/bash 
echo "Write the start and end file number:" 
read sta end 
echo "$sta" "$end" 

for ((c="$sta"; c<="$end"; c++)) 
do 
    cp AnalyzeClusterParameterFile AnalyzeClusterParameterFile$c 
    awk '{if (NR== '$c' -10){print $1 " " $2 " " $3}}' center.dat >> AnalyzeClusterParameterFile$c 

done 

但它(AnalyzeClusterParameterFile $ C文件)將新行這樣

R內= 0.1!在Mpc

Router = 5!在Mpc

NumberOfPoints = 50!默認爲16

VirialDensity = 200!默認值是200

CenterListName =

5.044627347e-01 5.008533222e-01 5.043365095e-01

什麼其實我是想(AnalyzeClusterParameterFile $ C文件)是

R內= 0.1!在Mpc

Router = 5!在Mpc

NumberOfPoints = 50!默認爲16

VirialDensity = 200!默認值是200

CenterListName = 5.044627347e-01 5.008533222e-01 5.043365095e-01

回答

1

這可能是由於AnalyzeClusterParameterFile末尾有換行符。您可以通過更換cp命令將其刪除:

head -c -1 AnalyzeClusterParameterFile > AnalyzeClusterParameterFile$c 

當心,這將殺死任何尾隨字符,而不是換行!

1

你可以修改與SED行。

catcenter.dat

sed -i "/CenterListName/ s/=$/= $(cat center.dat)/" AnalyzeClusterParameterFile$c

先讀值,並將其與SED添加到第二個文件。

相關問題