我一直试图制作一个脚本,将所有csv文件合并为一个月度文件。下面的脚本不起作用,它会产生以下错误:
awk: fatal: cannot open file `/ibv_ftp/merged/folder/file201910*.csv' for reading (No such file or directory)这是脚本不能正常工作的示例。它查找"file201910*.csv“文件,而不是所有"file20191030.csv”文件。每一天都有自己的文件。
To要清楚。我遇到的问题是asterix不能作为通配符使用。而是在文件名中使用它。在变量后面调用时,它似乎不起作用。即使以不同的方式使用该变量,也可以使用/不带引号,或者使用或问号代替asterix。它们都显示为文件名的一部分。
# Defines the current year
y=$(date +'%Y')
# Choose which months to be merged
for i in {06..10}
do
# Defines year and month
ym=$(date +'%Y')"$i"
# monthly
awk 'FNR==NR||FNR>2' /ibv_ftp/merged/folder/file"$ym"*.csv > /ibv_ftp/merged/monthly/file"$ym".csv
done脚本调用/ibv_ftp/merged/文件夹/file201910*..csv或file201910.csv或file201910??.csv以前的脚本是这样的。它使用了不同的文件,如下所示:
today=$(date +'%Y%m%d')
echo $today
# daily
awk 'FNR==NR||FNR>2' /ibv_ftp/folder/iv1_"$today"_*.csv > /ibv_ftp/merged/daily/folder/file"$today".csv在这个例子中,文件被称为iv1_20191030_111500.csv (最后一部分是时间戳)
发布于 2019-10-30 10:56:21
错误告诉您,没有任何东西与模式/ibv_ftp/merged/folder/file201910*.csv匹配。(它这样做是因为当shell无法展开通配符(如* )时,它通常将其保留为文字。
查看您认为确实有效的代码,源模式从/ibv_ftp/folder/开始,因为您的非工作代码使用/ibv_ftp/merged/folder/。
https://unix.stackexchange.com/questions/549467
复制相似问题