我有一個文件(TMP1),這是在以下格式號碼的列表:什麼是使用bash,awk或sed在文件中移位和掩碼每個數字的最快方法?
4373610497
4416339969
4426498049
4435738625
這裏的每64位的數字實際上是由它有我的數字多16位字段感興趣的
對於EG(和只顯示了48位,在這裏重要):
4435738625 = 0000000000000001 0000100001100100 0000000000000001
而且我想數字是:
a= 0000000000000001 = 1
b= 0000100001100100 = 2148
c= 0000000000000001 = 1
這是我現在用來做這件事的代碼 - 但它很痛苦地慢。輸入文件包含500K到100萬行,所以我試圖尋找更快或更有效的方法。
while read line; do
a=$((((line >> 32)) & 65535));
b=$((((line >> 16)) & 65535));
c=$((line & 65535));
printf "$a $b $c\n" >>tmp2
done <tmp1
我需要在FreeBSD機器上運行它 - 所以我不能使用gawk。而awk似乎不允許按位操作。
試試這個'awk'腳本:http://www.cs.ucsb.edu/~sherwood/awk/decimal2binary.awk.txt –
看到這個:http://stackoverflow.com/questions/5488551/how- to-unpack-64-bit-unsigned-long-in-64-bit-perl – michael501