2013-07-17 2 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 $ с файлом) собирается на новую строку, как этот

Rinner = 0,1! в Mpc

Router = 5! в Mpc

НомерOfPoints = 50! по умолчанию - 16

VirialDensity = 200! по умолчанию 200

CenterListName =

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

Что я на самом деле хочу (AnalyzeClusterParameterFile $ C файл)

Rinner = 0,1! в Mpc

Router = 5! в Mpc

НомерOfPoints = 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

Вы можете изменить строку с СЭД.

catcenter.dat

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

Считайте значение первого и добавить его ко второму файлу с СЭД.

Смежные вопросы