用GAWK选择线条

时间:2015-03-29 12:10:18

标签: bash shell 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

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

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

这就是我所拥有的。它工作正常,打印的值比我想要的值低,但它每次都打印第一行,无论价值多少。你能给我一些建议吗?感谢

2 个答案:

答案 0 :(得分:1)

怎么样:

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

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

答案 1 :(得分:0)

@JuniorCompressor

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

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

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

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