如何在多个文件上运行awk脚本

如何在多个文件上运行awk脚本,awk,Awk,我需要在数百个文件上运行一个命令,我需要帮助获取一个循环来执行此操作: 有一个输入文件列表/path/dir/file1.csv、file2.csv、…、fileN.csv 需要在所有这些输入文件上运行脚本 脚本类似于:command input=/path/dir/file1.csv output=output1 我尝试过以下方法: 用于f in/path/dir/file*.csv;执行命令,但如何每次读取和写入新文件? 谢谢您……尝试此操作(在将/path/to/data更改为正确的路径后

我需要在数百个文件上运行一个命令,我需要帮助获取一个循环来执行此操作:

  • 有一个输入文件列表/path/dir/file1.csv、file2.csv、…、fileN.csv
  • 需要在所有这些输入文件上运行脚本
  • 脚本类似于:command input=/path/dir/file1.csv output=output1
  • 我尝试过以下方法:
    用于f in/path/dir/file*.csv;执行命令
    ,但如何每次读取和写入新文件? 谢谢您……

    尝试此操作(在将
    /path/to/data
    更改为正确的路径后。与
    /path/to/awkscript
    和其他位置相同,指向您的测试数据。)

    使用以下命令使脚本“可执行”

    echo
    版本将帮助您确保脚本按预期工作。您仍然必须仔细检查输出或处理数据的副本,以免破坏基线数据

    您可以获取上一次迭代的输出

    awk -f /path/to/awkscript myFileLast.csv > myFileLast.rpt
    
    并复制/粘贴到cmd行以确认其工作正常

    当您确信
    awk
    脚本可以按照您的需要工作时,请注释掉
    echo awk..
    行,并取消注释单词
    #remove_me
    (并保存bash脚本)


    希望这能有所帮助,我现在使用的是黑莓手机,所以可能会有输入错误

    我将从这个开始,因为它看起来更简单…我的问题似乎是脚本本身需要在语法中包含input=和output=…因此我无法真正指定一个路径。例如,我的脚本会从一个文件变为另一个文件:命令输入=/path/dir/file1.csv输出=output1,然后命令输入=/path/dir/file2.csv输出=output2…..获取Arnold Robbins的《有效Awk编程,第四版》,不要编写shell循环-这是错误的方法(参见示例),完全没有必要。如果您发布示例输入和预期输出,我们可以帮助您。请将问题中出现的“script”一词改为“shell script”或“awk script”,以明确您在每个陈述中所说的内容。
     chmod 755 myScript.sh
    
    awk -f /path/to/awkscript myFileLast.csv > myFileLast.rpt
    
    for f in /path/to/files/*.csv ; do
      bname=`basename $f`
      pref=${bname%%.csv}
      awk -f /path/to/awkscript $f >      /path/to/store/output/${pref}_new.txt
    done