我只是第一次尝试使用 awk 并且有一个,也许是简单的问题。我正在尝试列出一个目录并根据字符串从列表中提取一些信息。我正在尝试的 bash 脚本是:
ls *.hdf > temporary.list
nom2=`awk 'BEGIN {FS = "." } ; { $1 ~ /'$year$month'/ } { print $2 }' temporary.list `
file=$year$month.$nom2.hdf
file2=$year$month.hdf
其中年份和月份在 for 循环中发生变化(1981 到 1985 和 01 到 12)。temporary.list 文件由 12 行组成,例如:
198201.s04m1pfv51-bsst.hdf
198202.s04m1pfv51-bsst.hdf
198203.s04m1pfv51-bsst.hdf
198204.s04m1pfv51-bsst.hdf
198205.s04m1pfv51-bsst.hdf
198206.s04m1pfv51-bsst.hdf
198207.s04m1pfv51-bsst.hdf
198208.s04m1pfv51-bsst.hdf
198209.s04m1pfv51-bsst.hdf
198210.s04m1pfv51-bsst.hdf
198211.s04m1pfv51-bsst.hdf
198212.s04m1pfv51-bsst.hdf
我想根据年月选择文件。问题是我的 awk 句子似乎没有将不同的行作为不同的寄存器,我想。脚本的输出是:
nom2 = h s04m1pfv51-bsst h s04m1pfv51-bsst h s04m1pfv51-bsst h
s04m1pfv51-bsst h s04m1pfv51-bsst h s04m1pfv51-bsst h s04m1pfv51-bsst
s04m1pfv51-bsst s04m1pfv51-bsst s04m1pfv51-bsst s04m1pfv51-bsst
s04m1pfv51-bsst
file = 198201.h s04m1pfv51-bsst h s04m1pfv51-bsst h
s04m1pfv51-bsst h s04m1pfv51-bsst h s04m1pfv51-bsst h s04m1pfv51-bsst
h s04m1pfv51-bsst s04m1pfv51-bsst s04m1pfv51-bsst s04m1pfv51-bsst
s04m1pfv51-bsst s04m1pfv51-bsst.hdf
file2= 198201.hdf
也许是一些简单的语法错误,任何帮助将不胜感激。
谢谢