Csv Awk:如何切割两个字段中相似的部分,然后得到剩余部分的差异?
假设我有两个字段以微秒为单位显示历元时间: 1318044415123456131804415990056 我想做的是:Csv Awk:如何切割两个字段中相似的部分,然后得到剩余部分的差异?,csv,awk,gawk,Csv,Awk,Gawk,假设我有两个字段以微秒为单位显示历元时间: 1318044415123456131804415990056 我想做的是: 从两个字段中剪切公共部分:“1318044415” 获取剩余零件的差值:990056-123456=866600 我为什么要这样做?因为awk使用浮点IEEE 754,而不是64位整数,所以我需要以微秒为单位获得两个事件的历元时间差 谢谢你的帮助 编辑: 最后,我发现Awk在雪豹10.6.8上可以处理的最大数量:9007199254740992 试试这个:echo'90071
9007199254740992
试试这个:echo'9007199254740992'| awk-F',“{print$1+0}”
Awk的版本是
20070501
(由Awk--version
制作)以下是一个符合您要求的Awk脚本:
BEGIN {
FS = ","
}
{
s1 = $1
s2 = $2
while (length(s1) > 1 && substr(s1, 1, 1) == substr(s2, 1, 1))
{
s1 = substr(s1, 2)
s2 = substr(s2, 2)
}
n1 = s1 + 0
n2 = s2 + 0
print n2 - n1
}
以下是一个符合您要求的awk脚本:
BEGIN {
FS = ","
}
{
s1 = $1
s2 = $2
while (length(s1) > 1 && substr(s1, 1, 1) == substr(s2, 1, 1))
{
s1 = substr(s1, 2)
s2 = substr(s2, 2)
}
n1 = s1 + 0
n2 = s2 + 0
print n2 - n1
}
你在哪个站台上跑步<代码>echo'1318044415123456131804415990056'| awk-F',“{打印$2-$1}”为我生成
866600
。谢谢@Johnsyweb。事实上,它适用于这种情况。然而,在探索Awk时,我将此设置为一个挑战。我可能会使用比大纪元时间大的不同数字。你能提供一个问题的真实例子吗?到目前为止,我用以获得大纪元时间的差异,但尽量使其通用,以便在其他数字较大的情况下重复使用。2**53?我想你必须在周二,6月5日2255 23:47:34 GMT之前解决这个问题。你在哪个平台上运行<代码>echo'1318044415123456131804415990056'| awk-F',“{打印$2-$1}”为我生成866600
。谢谢@Johnsyweb。事实上,它适用于这种情况。然而,在探索Awk时,我将此设置为一个挑战。我可能会使用比大纪元时间大的不同数字。你能提供一个问题的真实例子吗?到目前为止,我用以获得大纪元时间的差异,但尽量使其通用,以便在其他数字较大的情况下重复使用。2**53?我想你必须在周二,6月5日2255 23:47:34 GMT之前解决这个问题。