選択する:

選択する:

/proc/some_proc_id/cmdline私のUbuntuコンピュータからこの行をコピーしました。

java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@

^@とにかく、空白文字はviでと表示されます。次のコマンドを使用して空白文字に置き換えようとしました。

:%s#^@# #g

しかしそれは言うpattern not found ^@

特殊文字、特にキャレット記号で始まる特殊文字を変更するには?

答え1

^@とにかく、空白文字はviでと表示されます。

viその仕事をした人ではありません。シェルにコマンドラインを入力すると引数の間にスペースがありますが、実際にはコマンドラインはスペースで区切られた1つの長い文字列ではなく、個々の文字列の内部シーケンスです。シェルは、コマンドが実行される前にコマンドラインを別の引数文字列に分割します。

Cでは、文字列はNUL文字で終わります^@

特殊文字、特にキャレット記号で始まる特殊文字を変更するには?

これらの文字を入力するには、次の文字を表すために文字の前にControl- を付ける必要があります。v

たとえば、この場合は - の後にControl-が続きます。vControl@

テキストの次の文字を紹介する特殊文字は通常 - ですが、Control実際vには設定可能です。stty -a設定については、入力してください。lnext出力で見つけます。

答え2

それシンボルNULL 文字を表し、ASCII 値は 000 です。

あなたは試すことができます:

:%s/\%x00/ /g

選択する:

2@記号がキーの上にあるキーボードでは(Celadaに感謝します)、次のことができます。

  • %s/<CTRL-2>/ /g(コンピューターから)

  • %s/<CTRL-SHIFT-2>/ /g(Macから)

これは、<CTRL-2>まずCTRLPCを押してから押し続け、をクリックしてから2放すことを意味しますCTRL

<CTRL-SHIFT-2>Mac では、まず押してcontrol、押し続け、shiftMac では押し、押し続けて、クリックして、2離すことをcontrol意味しますshift

最後に、どちらのコマンドも%s/^@/ /g画面に結果を表示する必要があります。^@単一文字を表し、^後にはないので、@上記のコマンドでは、とを連続して入力することはできません^@

このコマンドは^@すべての文字を空白に置き換えます。

源泉)

答え3

さて、あなたはコンピュータの専門家ではないと仮定し、簡単な説明は次のとおりです! viエディタ(個人的には使用しませんが、おそらくvimで)でEscを押して挿入モードを終了し、/ % x 00を使用して^ @文字を検索して削除することができます(xキーを使用)。次の項目に移動するには、n(次の項目)を使用し、その項目xを使用します。削除する項目がいくつかある場合は、この方法が便利です。最初の検索(/%x00)の後にすべてが削除されるまでnxnxnx ...を実行できるからです!もちろん、削除するファイルの数が多い大容量ファイルがある場合は、検索と置換を実行する必要があります。 Escを押してから(複数回押しても破損しません)、Shiftキーを押して挿入モードになっていないことを確認し、画面の左下隅に:プロンプトを表示します。 (つまり、Shift キーを押しながら ; キーを押します。) 1,$s/%x00//g と入力します(後ろに表示されます)。次にEnterを押します。 ^@文字がすべて消えます!今行った作業は次のとおりです。このファイル(1、$ビット)のすべての行に^ @(%x 00ビット)が表示されるたびに(sビット)を何もない(/ /ビットに置き換えます。間に何もないことがわかります。スラッシュ)各行で必要なだけ何度もこれを行います(gビット、ここでgはグローバルを表します)。です。 \ nはUnixなどの改行文字なので、それを使用する必要があるかもしれないことを忘れないでください。あるいは、もちろん、必要な文字列も可能です。役に立ったことを願っています!

関連情報