Linux 如何使用shell脚本替换属性文件中的点

Linux 如何使用shell脚本替换属性文件中的点,linux,bash,shell,unix,terminal,Linux,Bash,Shell,Unix,Terminal,首先,我看到了与此类似的问题。我遵循了这些线程的解决方案。但我仍然无法修复它。我想从属性文件的键中删除点(.)。有人可以帮助识别问题吗 我有一个属性文件tempds.properties #Fri Jan 30 07:37:25 CET 2015 ds.home=/opt/abc mykey=/opt/xyz 我使用另一个脚本test.sh cd /opt chmod 777 tempds.properties #awk -F= -vOFS="=" 'gsub(/\./,"_",$1)+1'

首先,我看到了与此类似的问题。我遵循了这些线程的解决方案。但我仍然无法修复它。我想从属性文件的键中删除点(.)。有人可以帮助识别问题吗

我有一个属性文件tempds.properties

#Fri Jan 30 07:37:25 CET 2015
ds.home=/opt/abc
mykey=/opt/xyz
我使用另一个脚本test.sh

cd /opt
chmod 777 tempds.properties

#awk -F= -vOFS="=" 'gsub(/\./,"_",$1)+1' tempds.properties
cat tempds.properties| sed 's/\./_/g' > .tempds.properties


echo "Processing  "
for i in {1..5}; do
    sleep 1
    echo "..........."


done

. /opt/tempds.properties
echo $ds_home
echo $mykey
echo "Process finishd"
输出:

root@onebox:/opt# sudo ./test.sh
Processing
...........
./test.sh: 2: /opt/tempds.properties: ds.home=/opt/abc: not found

/opt/xyz
Process finishd

您可以使用
tr
命令替换点

tr '.' '_' .tempds.properties

您可以从
tempds.properties
创建
.tempds.properties
,但仍然调用
tempds.properties

您可以完全跳过创建临时文件:

eval `sed 's/\./_/g' tempds.properties`