我有一个包含数据的文件:
/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;}'
这就是我所拥有的。它工作正常,打印的值比我想要的值低,但它每次都打印第一行,无论价值多少。你能给我一些建议吗?感谢
答案 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建议的解决方案更灵活。