【发布时间】:2014-02-02 11:31:33
【问题描述】:
我正在尝试读取文件中的行,如果该行包含标签,则标签中的文本用于将标签替换为来自不同属性文件的值,在该行之前,所有标签都被替换一个不同的文件。
因此,正在读取的初始文件具有遵循以下格式的行:
testkey "TEST-KEY" "[#key_location#]:///[#key_name#]"
其中 [# 和 #] 包含标签文本。
属性文件将包含如下行:
key_location=location_here
key_name=test_key_name
所以我想要达到的最终结果是该行被写入一个新文件,但是标签被替换为属性文件中的值,所以使用上面的内容:
testkey "TEST-KEY" "loaction_here:///test_key_name"
我不确定如何最好地处理标签并在一行中处理多个标签,我很迷茫。任何帮助将不胜感激。
骨架代码:
while read line
if [[ $line == *[#* ]]
then
#echo found a tag and need to deal with it
else
echo "$line">> $NEW_FILE
fi
done < $INITIAL_FILE
编辑
文件中的行可以包含一个或多个标签,而不是像给出的示例中那样总是两个。
【问题讨论】:
-
您的属性文件包含多个键/名称,对吧?确切的格式是什么?
abc_location=asdf abc_name=asdfxyz_location=asdf xyz_name=asdf之类的东西?还是奇数行包含关键位置,偶数行包含前面关键位置的关键名称? -
属性文件每行都有一个值,它不仅对应于键,还有很多其他值。标记内的文本将始终对应于属性名称(即 = 之前的位)。认为我需要 sed 替换标签的新行,只是不确定如何因为我对 shell 的了解很可怜