如何在多个文件上运行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更改为正确的路径后
用于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