Awk 如何从平面文件中删除特定于unix时间戳的数据

Awk 如何从平面文件中删除特定于unix时间戳的数据,awk,sed,grep,timestamp,Awk,Sed,Grep,Timestamp,我有一个巨大的文件,里面有这样一个列表 email@domain.com^B1569521698 email2@domain.com,@2domain.com^B1569521798 email3@domain.com,test@2domain.com^B1569521898 email10000@domain.com^B1569521998 .. .. 文件名为/usr/local/email/whitelist ^B后面的数字是unix时间戳 我需要从列表中删除时间戳小于的所有行 (例如)

我有一个巨大的文件,里面有这样一个列表

email@domain.com^B1569521698
email2@domain.com,@2domain.com^B1569521798
email3@domain.com,test@2domain.com^B1569521898
email10000@domain.com^B1569521998
..
..
文件名为/usr/local/email/whitelist

^B后面的数字是unix时间戳

我需要从列表中删除时间戳小于的所有行 (例如)1569521898


我尝试使用各种awk/sed组合,但没有结果。

由于您的输入文件中有控制字符,请您尝试以下操作一次。仅使用给定的样本编写和测试

awk '
match($0,/\002[0-9]+/){
  val=substr($0,RSTART+1,RLENGTH-1)
  if(val>=1569521898){ print }
  val=""
}
'  Input_file

您注意到的字符
^B
是一个。前32个控制字符是ASCII码
0
1FH
,它们构成了一组特殊的非打印字符。这些字符称为控制字符,因为这些字符执行各种打印机和显示控制操作,而不是显示符号。这个特殊的字符代表
STX
文本的开头

您可以在shell中键入控制字符:Ctrl+v Ctrl+b,也可以直接使用八进制表示法(
\002

awk -F '\002' '($2 >= 1569521898)'