我々は、Linuxのツールについて話しているなら、あなたのような様々なソリューション、試みることができる:要件をソートせずに
$ join -t"=" -a1 -o 0,2.2 <(sort emptyform) <(sort filledform) # "=" is used as delimiter
あるいはawkのは:
$ awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\n Missing fields:";for (i in a) print i,a[i]}' empty filled
テスト:
cat <<EOF >empty
Name=""
Surname=""
Age=""
Address=""
Kids=""
Married=""
EOF
cat <<EOF >filled
Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"
EOF
join -t"=" -a1 -o 0,2.2 <(sort empty) <(sort filled)
#Output:
Address="Europe"
Age="42"
Kids=
Married=
Name="George"
Surname="Vasiliou"
awkの出力
awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\nnot completed fields:";for (i in a) print i,a[i]}' empty filled
Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"
not completed fields:
Married=""
Kids=""
特にawkでは、{if ($1 in a) {print;delete a[$1]}}
からプリントを削除すると、ENDセクションでは欠落しているフィールドだけが表示されます。
素敵なビジュアルインターフェイスを持つ別の方法としては、差分ユーティリティである:あなたは空白のフォームの両方のテキストバージョンを持っており、塗りつぶされた形場合
$ diff -y <(sort empty) <(sort filled)
Address="" | Address="Europe"
Age="" | Age="42"
Kids="" | Name="George"
Married="" | Surname="Vasiliou"
Name="" <
Surname="" <
、シェルでこれを試してください: 'diffをBlankFile.txt FileWithData .txt'。それはあなたが必要とするものを与えますか?その場合は、2つのテキストファイルを繰り返し処理してデータを比較するScalaプログラムを作成します。困難があれば、ここにあなたの仕事を示してください。私たちはあなたを助けます。 – radumanolescu