19

EBCDIC から ASCII に変換されたファイルがあります。以前は新しい行があった場所に、現在は<85>(4 文字のように見えるのではなく、1 文字を表す記号) として表示される文字があり、ファイル全体が 1 行にあります。それらを検索して、もう一度すべて新しい行に置き換えたいのですが、方法がわかりません。

検索履歴*に表示されることを期待して、カーソルを上に置き、次の出現を検索してみました。/それは機能しませんでした。文字に続く単語を検索するだけでした<85>

Google で検索しましたが、明確なものは何も見つかりませんでした。

私の目標は、次のような検索と置換文字列を作成することです。

:%s/<85>/\n/g   

現在、これは私に与えるだけです:

E486: Pattern not found: <85>  
4

3 に答える 3

26

Google で検索すると、「vim で印刷できない文字を検索して置換する」が見つかりました。あなたができるはずのようです:

:%s/\%x85/\r/gc

cプロンプトを表示せずに置換を実行するには、を省略cします。

Vim では、入力:h \%xすると詳細が表示されます。に加えて、 10 進数、8 進数、最大 4 文字、および最大 8 個の 16 進数には、、、およびを使用できます\%x\%d\%o\%u\%U

于 2010-01-18T16:21:49.760 に答える
2

特殊文字検索の場合、たとえば win1252 <80><90><9d>... の場合は次のように入力します。

/\%u80, \/%u90, /\%u9d ...

編集者から。

8 進数、10 進数、16 進数の場合も同様に、次のように入力します: /\%oYourCode, /\%dYourCode, /\%xYourCode.

于 2020-04-23T16:36:25.117 に答える
-4

これを試して::%s/<85>/^M/g

注: Ctrl-V を同時に押してから M を押します

または、別のツールを使用しても構わない場合は、

awk '{gsub("<85>","\n")}1' file
于 2010-01-18T16:00:45.377 に答える