2016-07-17 18 views
0

新しいCSVファイルには2つの異なる結果を持つ2つの条件があります。CSVチェックawk条件条件

すべてのcsvファイルを読み込んでawkを使用し、1番目の条件が仕事であるかどうかを確認して結果を返し、新しいCSVにその行をコピーします。 私は別の結果で使用した別の条件。 2番目の条件を持つ行も同じCSVにコピーされます。

マイコード:

 zcat "$FileName" | awk -F'\t' '($3 ~/\.jar/ || /\.msi/ || /\.dll/ || /\.cab/ || /\.exe/ || /\.rar/ || /\.mar/ || /\.tar/ || /\.gz/ || /\.upd/ || /\.bin/ || /\.zip/ || /\.pogo/ || /\.dcr/ || /\.qgi/ || /\.deb/ || /\.ipa/ || /symantec/ || /windowsupdate/ || /\.kaspersky/ || /adobe\.com/) && $42 ~/7/ && ($15 ~/androiddownloadmanager/ && /\.apk/ && /\.pak/ && /\.vpx/) {Str="SW Download: " $3;print Str > "New.csv"}' 



    zcat "$FileName" | awk -F'\t' '(($4 >=300) && ($4 <=399)) {Str="Redirect: " $3;print Str > "New.csv"}' 

結果は、第二の条件とちょうどラインとi'v新しいCSVということです。

おかげ

+1

もう一度質問がありましたか? –

答えて

0
ファイルをまだ

が存在する場合

>リダイレクトは上書きされますファイルに内容を追加する

使用>>、2番目のコマンドは次のようになります。

zcat "$FileName" | awk -F'\t' '(($4 >=300) && ($4 <=399)) {Str="Redirect: " $3;print Str >> "New.csv"}' 

さらに読書:Redirecting Output of print and printf

1

>>の代わりに>を使用していますが、なぜシェルではなくawk内から出力リダイレクトを行っていますか?また、値を出力するのではなく、文字列連結の結果を変数に取り込むのはなぜですか?正規表現を少し省略することもできます。ただしてください:

zcat "$FileName" | awk -F'\t' -v OFS=': ' '($3 ~/\.jar/ || /(\.(msi|dll|cab|exe|rar|mar|tar|gz|upd|bin|zip|pogo|dcr|qgi|deb|ipa|kaspersky)|symantec|windowsupdate|adobe\.com/) && $42 ~/7/ && ($15 ~/androiddownloadmanager/ && /\.apk/ && /\.pak/ && /\.vpx/) {print "SW Download", $3}' > New.csv 

zcat "$FileName" | awk -F'\t' -v OFS=': ' '($4 >=300) && ($4 <=399) {print "Redirect", $3}' >> New.csv