2014-02-12 14 views
1

我有一個由\ 001或^一個字符分隔的數據文件。因此,數據看起來像這樣轉義文件中最後一次轉義斜槓的'轉義'值

1234^A This is Ma Baker ^A Gimme all your money ^A \0000123\^A 

我想搜索^這實際上是一個模式像\ 001 ASCII 我可以用這樣的事情。我可以管理下面的例如

sed e/string/substitute 
    \M\a\B\a\k\e\r\s\h\g\a\v\e | sed -e 's_\\_\\\\_g' 

但我不知道如何尋找的^ A字符(我不能看到它通常與貓或視圖),我需要找到剛纔那些先於^ A反斜槓。因此,這裏發生的事情是 - 發送了錯誤的消息,發送給處理文件忽略^ A作爲分隔符的命令(當分隔符前面加上反斜槓時),實際上它必須得到遵守。所以,我需要加倍轉義反斜線像上面刪除「逃離」的它財產,把它像一個字面

+0

所以你想在文件中找到最後一個八進制數1'\ 001'並將其替換爲什麼? – sln

+0

你不能只是假設有一些東西被轉義。比這更復雜。 's's's不是逃避s。它是一種逃避加上s。 'Thi \\\'s'也不是。然而,「Thi \\\ s」卻是。 '(?<!\\)(?:\\\\)*(\\(?!\\)。)'是一個正確的正則表達式來查找任何轉義。 – sln

+0

Thx.say我有這個文件'Sam^ATom^AMary \^AJane^A'分隔符是^ A。所以文件分裂爲「Sam Tom Mary Jane」。好吧,但簡前有一個\^A。該\實際上是數據的一部分,但它的順序逃脫了^ A。所以現在相同的文件被拆分爲「Sam Tom MaryJane」。Mary和Jane之間的限制被忽略。我想趕上這種情況,然後用\\^A.A逃離\^A,之後這個文件看起來像是「Sam Tom Mary \ Jane」 – user1874594

回答

3

您可以使用此sed將匹配逃脫^A和雙逃避它:

sed 's~\\\x01~\\&~g'