2017-03-29 15 views
0

私は、奇妙な文字:を含むかもしれない変数を持つスクリプトを持っています。私はそれらを削除する必要がありますが、正直言って、私はそれらの文字に一致するようにどこから始めるべきかも知らない。スクリプトにコピーして貼り付けることはできません。ちょうど?? ?と表示されます。これらの文字をsedまたはawkとどのようにマッチさせることができますか?私は、システムの可用性のために、perlやPHPやsedやawkをはるかに超えるものを使用する能力を持っていません。sedまたはawkを使用して「チェックボックス」文字を削除する

+0

あなたはより詳細な情報を提供することはできますか? –

+0

これはLinuxマシンで、実際にドッカーアプリです。私はカスタムの後処理スクリプトが使用する環境変数を設定するプログラムを持っています。カスタムのポスト処理スクリプトを作成しようとしていますが、必要な変数の1つにそれらの文字があります。私は文字エンコーディングやそれについて何も知らない、それは私の問題のようなものです。 – user2328273

+0

さて、あなたは 'file script'を使ってエンコーディングを得ることができ、' hexdump -C script'を使ってスクリプトから文字を見つけようとすることができます。あなたの質問にその情報を添付してください。 –

答えて

0

私が解決したのは、スクリプトのエンコードをASCIIではなくUTF-8に変更したことでした。私はメモ帳でこれをやった。それで、私は16進数に変換するいくつかのラウンドアバウトの方法(これは変数が環境変数であり、ファイルからではないために何もできなかった)または何か他のものではなく、文字を直接使用することができました。私はまた、次のことがずっと簡単だったようなawkを使用するか、sedをする必要はありませんでした:

cleaned_var=${environmental_variable//" ✔"}

4

まず、特別な文字の周りにいくつかのフラグ文字列を入れてから、hexdump -Cを見てください。次に、HEXコードを使用してsedコマンドを書き込みます。たとえば、次のようになります。

[STEP 118] # cat file 
>>> ✔<<< 
[STEP 119] # hexdump -C file 
00000000 3e 3e 3e f0 9f 8d bf 20 e2 9c 94 3c 3c 3c 0a  |>>>.... ...<<<.| 
        ^^^^^^^^^^^^^^^^^^^^^^^^ 
[STEP 120] # sed -e $'s/\xf0\x9f\x8d\xbf\x20\xe2\x9c\x94//g' file # need to use the $'...' 
>>><<< 
[STEP 121] # 

すべてが完了したら、追加されたフラグ文字列を削除します。

+0

残念ながら、私が使用しているマシンにはhexdumpがなく、追加できません。私が必要とする変数は環境変数であり、ファイルではありませんが、ファイルに書き込むこともできます。私は何とかそこにhexdumpを得ることができるかどうかを見ます。 – user2328273

+0

あなたは 'od'または' xxd'を使うこともできます。例: 'echo 123 | od -t x1'または 'echo 123 | xxd'。 – pynexj

1

これを試してみてください - (ファイルは、いくつかのコントロールMとあなたが質問に言及している文字が含まれていると私は唯一の英数字を印刷しようとしています)

$cat f 


hello vipin 
street1 
pin 12345 

✔ 

$awk '/[[:alnum:]]/ {print }' f 
hello vipin 
street1 
pin 12345 

コントロールのように見えます入力ファイルをSOに保存した後、M文字が消えています。

0
$ cat file 
some weird characters: ✔. I need to remove 
second line of some weird characters: ✔. I need to remove 

$ tr -c -d '[:print:][:space:]' < file 
some weird characters: . I need to remove 
second line of some weird characters: . I need to remove 
関連する問題