CSVファイルを1行ずつ読み込み、いくつかの列の値のすべての行をチェックし、条件に従って別の新しいCSVファイルを作成するシェルコードを実行する必要があります。シェルコード - ループでCSVファイルを読み込んで別のファイルを作成する
私はこのようなコードを開始しました:
FileName=$1
while read line
do
zcat FileName awk -F'\t' '$3 ~/.jar/ || $3 ~/.msi/ || $3 ~/.dll/ || $3 ~/.cab/ || $3 ~/.exe/ || $3 ~/.rar/ || $3 ~/.mar/ || $3 ~/.tgz/ || $3 ~/.tar/ || $3 ~/.gz/ || $3 ~/.upd/ || $3 ~/.bin/ || $3 ~/.zip/ || $3 ~/.pogo/ || $3 ~/.dcr/ || $3 ~/.qgi/ || $3 ~/.deb/ || $3 ~/.ipa/ || $3 ~/symantec/ || $3 ~/windowsupdate/ || $3 ~/kaspersky/ || $3 ~/adobe.com/ && $42 ~/7/ && $15 ~/androiddownloadmanager/ && $15 ~/.apk/ && $15 ~/.pak/ && $15 ~/.vpx/ {Str="SW Download: " $3;Str>> New.csv} '
echo "$line" >> new2.csv
done < FileName
注:ファイル名が.gzがあります。
(1)予期しないトークン `done 'の近くで構文エラーが発生しました。
(2)新しいcsvが実行され、行が含まれているかどうかを確認したい。
ありがとうございました
後 'Filename' ZCATと$ファイル名の前に同じライン上で不足しているパイプ?また、シェルでループするのはなぜですか?あなたはawkに各行のためにそれを実行するのではなく、ファイル全体を扱わせるのはどうですか? 'Filename = $ 1; zcat $ファイル名| awk - -' –
あなたは本当に '$ 15'が4つの異なる正規表現に同時に一致する必要があることを意味しますか?それがあなたのコードの意味です。 – tripleee