2

私は現在、何千ものkvpを含む.propertiesファイルがあるプロジェクトに取り組んでいます。これらの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
4

1 に答える 1

1

これまでのところ、コードは正常に見えます。いくつかのマイナーな落とし穴

  • sort $1 | uniqで置き換えることができますsort -u $1
  • すでにソートされているため、2番目sortは必要ありませんtemporary.tmp
  • の代替案はawk -F=可能性がありますがcut -d= -f1、それがより効率的かどうかはわかりません

これを何度も実行しない限り、最適化に多くの時間を費やすことはありません。微調整やいじりは、月に1〜2分待つよりも簡単にコストがかかります。

于 2013-01-02T21:18:23.883 に答える