我想将从文件中获取的一些数据写入文件的最后一行(不是新行)。我使用以下脚本。
#!/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文件)会像这样进入新行
Rinner = 0.1!在Mpc
路由器= 5!在Mpc
NumberOfPoints = 50!默认值是16
VirialDensity = 200!默认值为200
CenterListName =
5.044627347e-01 5.008533222e-01 5.043365095e-01
我真正想要的是(AnalyzeClusterParameterFile $ c文件)
Rinner = 0.1!在Mpc
路由器= 5!在Mpc
NumberOfPoints = 50!默认值是16
VirialDensity = 200!默认值为200
CenterListName = 5.044627347e-01 5.008533222e-01 5.043365095e-01
答案 0 :(得分:1)
您可以使用sed修改该行。
catcenter.dat
sed -i "/CenterListName/ s/=$/= $(cat center.dat)/" AnalyzeClusterParameterFile$c
首先读取值,然后使用sed将其添加到第二个文件中。
答案 1 :(得分:1)
这可能是由AnalyzeClusterParameterFile
末尾的换行符造成的。您可以通过将cp
命令替换为:
head -c -1 AnalyzeClusterParameterFile > AnalyzeClusterParameterFile$c
请注意,这会杀死所有尾随角色,而不仅仅是换行符!