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)'