2013-04-03 91 views
0

我有一個包含在下面的表格線的二進制文件:的grep通過二進制文件

blabla^A2013.04.03-09:35:04^Ablabla 

其中^A是二進制字符001

我希望能夠執行一個grep,它只會給出^A(不是整行)之間的內容。

我知道,標誌-o僅用於比賽,但我不知道如何來搜索二進制字符

回答

0

您應該能夠在命令行上包含control-A,方法是隻需在要顯示的位置鍵入control-A。在最壞的情況下,您可能需要在其之前鍵入control-V。您還可以使用bashANSI-C quoting(如$'\001')探索符號。

+0

不錯!我們正在接近。 'control-V控制-A'完成了這個任務,現在我可以找到第一個^ A,但是我怎麼找到最後一個呢?我嘗試過'grep -o「^ A *^A」',但它不是我所需要的:^ A比其他任何東西都好^^ – user1692261

+0

得到它。我使用:'^ A [^^ A] *^A' – user1692261

+0

您需要'grep -o「^ A [^^ A] *^A」這將在每一端拾取控制-A。我會試着用'sed'而不是'grep'來代替這個:'sed's /.*^ A \([^^ A] * \)^ A。*/\ 1 /''。 –

0

嘗試這樣做:

grep --binary-files=text pattern file.txt 

這樣:

$ grep --binary-files=text -oP '\^\K[^\^]+(?=\^)' file.txt 
A2013.04.03-09:35:04 
+0

但是模式是什麼?我試過'^ A'和'001'和'\ 001'非它們的工作 – user1692261

+0

看到我編輯的文章,有完整的工作正則表達式 –