Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash删除属性文件中的双属性_Bash - Fatal编程技术网

使用bash删除属性文件中的双属性

使用bash删除属性文件中的双属性,bash,Bash,我目前正在从事一个项目,其中有一个.properties文件,其中包含数千个kvp。有些kvp存在多次。。。所以我想删除重复的行(当然,如果它们相同的话)。但是我也担心有些键是重复的,但是有不同的值 我很确定有更简单的方法可以做到这一点,但我想学习bash脚本作为一项附加技能,但是。。。我基本上没有bash知识。尽管如此,我还是提出了以下解决方案,但我高度怀疑这是最有效的方法。有没有更简单的方法 #! /bin/bash # Remove unique lines (key and value

我目前正在从事一个项目,其中有一个.properties文件,其中包含数千个kvp。有些kvp存在多次。。。所以我想删除重复的行(当然,如果它们相同的话)。但是我也担心有些键是重复的,但是有不同的值

我很确定有更简单的方法可以做到这一点,但我想学习bash脚本作为一项附加技能,但是。。。我基本上没有bash知识。尽管如此,我还是提出了以下解决方案,但我高度怀疑这是最有效的方法。有没有更简单的方法

#! /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?