我有一個包含在下面的表格線的二進制文件:的grep通過二進制文件
blabla^A2013.04.03-09:35:04^Ablabla
其中^A
是二進制字符001
。
我希望能夠執行一個grep,它只會給出^A
(不是整行)之間的內容。
我知道,標誌-o
僅用於比賽,但我不知道如何來搜索二進制字符
我有一個包含在下面的表格線的二進制文件:的grep通過二進制文件
blabla^A2013.04.03-09:35:04^Ablabla
其中^A
是二進制字符001
。
我希望能夠執行一個grep,它只會給出^A
(不是整行)之間的內容。
我知道,標誌-o
僅用於比賽,但我不知道如何來搜索二進制字符
您應該能夠在命令行上包含control-A,方法是隻需在要顯示的位置鍵入control-A。在最壞的情況下,您可能需要在其之前鍵入control-V。您還可以使用bash
的ANSI-C quoting(如$'\001'
)探索符號。
嘗試這樣做:
grep --binary-files=text pattern file.txt
這樣:
$ grep --binary-files=text -oP '\^\K[^\^]+(?=\^)' file.txt
A2013.04.03-09:35:04
但是模式是什麼?我試過'^ A'和'001'和'\ 001'非它們的工作 – user1692261
看到我編輯的文章,有完整的工作正則表達式 –
不錯!我們正在接近。 'control-V控制-A'完成了這個任務,現在我可以找到第一個^ A,但是我怎麼找到最後一個呢?我嘗試過'grep -o「^ A *^A」',但它不是我所需要的:^ A比其他任何東西都好^^ – user1692261
得到它。我使用:'^ A [^^ A] *^A' – user1692261
您需要'grep -o「^ A [^^ A] *^A」這將在每一端拾取控制-A。我會試着用'sed'而不是'grep'來代替這個:'sed's /.*^ A \([^^ A] * \)^ A。*/\ 1 /''。 –