![如何 grep 十六进制内容并指定小数模式?](https://linux22.com/image/159682/%E5%A6%82%E4%BD%95%20grep%20%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E5%86%85%E5%AE%B9%E5%B9%B6%E6%8C%87%E5%AE%9A%E5%B0%8F%E6%95%B0%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
我有一个包含以下内容的文件(作为 UTF-8 格式的文本文件)
e04ba1af81d887979ddcee1dc23f2531
43f85926fdb6a668386ee354f8b836a1
b53614f5139c052ec08ea1ecd2532daf
e9b3914d7b1e1bf8e6feab621330245b
bbcad02116316176385fbfb294ee77b4
我需要确保该文件包含一个数字46390
(十进制)。它b536
在十六进制中等于第三行的开头。
如何使用grep
或awk
使其将文件和模式转换为二进制表示形式,然后进行搜索?换句话说,考虑到碱基是已知的,使搜索碱基独立。
示例输出:
1)
$ cat file.txt | grep 46390
10110101001101101010011110101000100111001110000000101001011101100000010001110101000011110110011010010010100110010110110101111(这是b53614f5139c052ec08ea1ecd2532daf(十六进制)
2) 一个文件包含一个字符串3CA547A
(二进制0011110010100101010001111010
)。我得到了某个序列的十进制表示形式。文件可能包含此序列,并且可能未按 8 位对齐。假设该序列等于十进制 15(二进制1111
)
命令:
$ cat file.text | grep 15
结果将包含 2 次出现:
0011110010100101010001111010
答案1
printf
简单地使用来进行转换怎么样?
printf '^%x\n' 46390 | grep -f- file
(我认为将两者转换为二进制没有帮助)