使用 GAWK 选择线路

Choosing lines with GAWK

我有一个包含数据的文件:

 /homes/XXXX/YYYYY/file1:20150324
 /homes/XXXX/YYYYY/file2:20150327
 /homes/XXXX/YYYYY/file3:20150320
 /homes/XXXX/YYYYY/file3:20150327
 /homes/XXXX/YYYYY/file4:20150328

第一个字段是路径,: 作为分隔符,第二个字段是日期。我想要做的是 select 只有那些日期低于某个值的行。

gawk -v var="$SOMEVALUE" '{FS = ":"; if(<=var) print;}'

这就是我的。它工作正常,打印的行的价值低于我想要的,但它每次也打印第一行,无论价值如何。你能给我一些建议吗?谢谢

怎么样:

gawk -F: -v var="$SOMEVALUE" 'var>='

错误是您必须在读取第一行后更改字段分隔符。

@JuniorCompressor 我没有意识到这一点。会在以后的脚本中省去我的麻烦。谢谢:-)

@sykatch 您还可以在 gawk 脚本中静态定义字段分隔符,例如:

    gawk -v var="20150323" 'BEGIN {FS = ":"}; {if(<=var) print;}' datefile.txt

但 JuniorCompressor 建议的解决方案更灵活。