使用 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 建议的解决方案更灵活。
我有一个包含数据的文件:
/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 建议的解决方案更灵活。