gpt4 book ai didi

linux - Shell代码-通过循环读取CSV文件并制作另一个

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:07 26 4
gpt4 key购买 nike

我必须执行逐行读取 CSV 文件的 Shell 代码,检查某些列值中的每一行并根据条件制作另一个新的 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 是否完成并包含行。

谢谢

最佳答案

您不需要 shell 循环。只需通过管道将 zcat 输出到 awk:

FileName=$1

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"}'

使用变量的正确语法是$FileName,而不是FileName

更新:

正如 tripleee 所指出的,awk 命令应该是:

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

关于linux - Shell代码-通过循环读取CSV文件并制作另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com