使用bash删除属性文件中的双属性
我目前正在从事一个项目,其中有一个.properties文件,其中包含数千个kvp。有些kvp存在多次。。。所以我想删除重复的行(当然,如果它们相同的话)。但是我也担心有些键是重复的,但是有不同的值 我很确定有更简单的方法可以做到这一点,但我想学习bash脚本作为一项附加技能,但是。。。我基本上没有bash知识。尽管如此,我还是提出了以下解决方案,但我高度怀疑这是最有效的方法。有没有更简单的方法使用bash删除属性文件中的双属性,bash,Bash,我目前正在从事一个项目,其中有一个.properties文件,其中包含数千个kvp。有些kvp存在多次。。。所以我想删除重复的行(当然,如果它们相同的话)。但是我也担心有些键是重复的,但是有不同的值 我很确定有更简单的方法可以做到这一点,但我想学习bash脚本作为一项附加技能,但是。。。我基本上没有bash知识。尽管如此,我还是提出了以下解决方案,但我高度怀疑这是最有效的方法。有没有更简单的方法 #! /bin/bash # Remove unique lines (key and value
#! /bin/bash
# Remove unique lines (key and value are equal)
sort $1 | uniq > temporary.tmp
# Find keys that are not unique
doubleKeys=`awk -F"=" '{print $1}' temporary.tmp | sort | uniq -d`
if [ -z $doubleKeys ] ; then
mv temporary.tmp final.txt
echo "Removed doubles, final file is final.txt"
else
echo $doubleKeys > DoubleKeys.log
rm temporary.tmp
echo "Double keys found with different values, see DoubleKeys.log"
fi
到目前为止,代码看起来还不错。一些小细节
- 您可以将
替换为sort$1 | uniq
sort-u$1
- 第二个
是不必要的,因为排序
已经排序temporary.tmp
的替代方案可能是awk-F=
,但我不确定它是否更有效cut-d=-f1
除非您多次运行,否则我不会花太多时间优化它。轻松地调整和摆弄比每月等待一两分钟花费更多。s,couble,double,单位为$subject?