単一のコマンドですべての比較/チェックを実行できますが、awk
きれいではない場合があります。
トリッキーな部分は、de
たとえば、あなたが持っている数字を取り、awk
それが文字列/小数ではなく16進数であることを伝えることです. これは、接頭辞を付けて0x
から使用することで実現できstrtonum()
ます。
数値を「使用可能な数値」に変換した後、最初の 6 列を加算する計算を実行し、結果の部分文字列 (最後の 2 文字) を取得して 7 列目と比較できます。それらが等しい場合は、その行を印刷します。そうでない場合は、無視してください。
awk '{
x = sprintf("%x",
strtonum("0x"$1)
+ strtonum("0x"$2)
+ strtonum("0x"$3)
+ strtonum("0x"$4)
+ strtonum("0x"$5)
+ strtonum("0x"$6)
);
if (substr(x, length(x) -1, length(x)) == $7) {
print $0
};
}' input.txt
(注:sprintf()
適切に実行するには、コンテンツを 1 行に収める必要がある場合があります。ここでは、読みやすくするために拡張しました)
これをファイルに出力するに> output.txt
は、上記のコマンドの最後に追加できます。これにより、効果的に「削除」されなかったすべての行と一致する行のみが含まれます。
オリジナルを上書きしたい場合は、絶対に必要ない場合を除いて推奨しませんが、追加することができます> output.txt && mv output.txt input.txt
(上書きの確認を求めるプロンプトが表示されます)。