私は壊れたログを変換するための助けが必要です。私は管理者から受け取ります(残念ながら、それを修正するつもりはありません)。 基本的に、ログに重複した最初の列が含まれている場合があります。別の列の値がnullの場合は削除したい場合があります。重複した行を削除する
これは、あなたが見ることができるように、それはかなり
datetime,auth_protocol,result,client,port,login
2016-07-15 09:34:52,www,PASS,111.222.333.444,5593,[email protected]
2016-07-15 09:34:52,www,PASS,111.222.333.444,NULL,[email protected]
2016-08-14 00:51:35,www,PASS,NULL,19509,[email protected]
2016-08-14 00:51:35,www,PASS,444.333.222.111,19509,[email protected]
2016-09-16 05:08:46,www,FAIL,123.456.789.222,45673,[email protected]
2016-09-16 15:35:55,www,FAIL,123.456.789.222,NULL,[email protected]
2016-09-17 17:10:01,www,FAIL,111.222.333.444,55516,[email protected]
をどのように見えるかで、いくつかの行は、最初の列(日付)を重複しています。
1:私は何をしようとしている
は、にあるすべての列については、その最初の列は4または5列(IPまたはポート)
2を比較し、重複している:重複行を削除します。列4または5
これは正しい出力することsouldにNULL値を持つ:
datetime,auth_protocol,result,client,port,login
2016-07-15 09:34:52,www,PASS,111.222.333.444,5593,[email protected]
2016-08-14 00:51:35,www,PASS,444.333.222.111,19509,[email protected]
2016-09-16 05:08:46,www,FAIL,123.456.789.222,45673,[email protected]
2016-09-16 15:35:55,www,FAIL,123.456.789.222,NULL,[email protected]
2016-09-17 17:10:01,www,FAIL,111.222.333.444,55516,[email protected]
私はそれを明確に聞こえる願っていますし、d
あなたが試したことにいくつかのコードを示すことができます。 – Inian
複製された行は常にログ内で直接続けられますか?列4または5にNULLが含まれていて、複製された行ではないケースはありますか?私は正しい例 – jas
1)はい、いつも 2)はい、NULL値が存在することができ、私はいくつかの醜いアドホックをしたが、その醜い;) 猫account.csv | grep -Ff <(cat account.csv | cut -d '、' -f1 | sort | uniq -d)| grep -v "、NULL、" >> temp.csv; 読み取り中。 do single = $(echo $ line | cut -d "、" -f1); if [[$(cat temp.csv | grep "$ single")== ""]]; echo $ line >> temp.csv; fi done
Wyjun