私は持っています
入力する:
NISHA =\455
出力:
NISHA = 455
\
出力から削除したいです。コマンドを試しましたが、うまくいかずにsed "s/[\]//g" P
エラーが表示されます。
character found after backslash is not meaningful
ベストアンサー1
例の結果に示すように、バックスラッシュを空白に置き換えることができます。
sed 's/\\/ /g'
または、コードに示されているように削除することもできます。
sed 's/\\//g'
特殊文字
バックスラッシュをエスケープして特別な意味を取り消すのに問題がある可能性があります。バックスラッシュは、シェルと正規表現からエスケープするために使用される特殊文字です。
シェルコマンドラインまたはスクリプトに入力するコマンドは最初にシェルで処理され、文字とそのエスケープの特別な意味を解釈します。その後、結果は実行されるコマンド(たとえばsed
)に渡され、それ自体が文字の解釈を実行します。コマンドを作成すると、精神的なプロセスは逆になります。まず、正規表現のエスケープを追加してから、シェルのエスケープを追加します。
正規表現として(などのコマンドを入力してください
sed
。)grep
バックスラッシュは、次のようにバックスラッシュを使用してエスケープできます。また、バックスラッシュは特別な意味を失うため、使用したものと同じ集合式を使用する\\
こともできます。[\]
殻に(例
bash
:)バックスラッシュを使用してバックスラッシュをエスケープできます。したがって、文字列を二重引用符で囲むと、バックスラッシュの動作がより複雑になります\
。\\
"
<1>しかし、デュアルバックスラッシュは依然として単一のバックスラッシュを生成します。文字列を一重引用符で囲むと、文字を'
除くすべての文字を文字通り処理できます'
。
使いたいなら二重引用符、次のいずれかを使用できます。
sed "s/\\\\//g"
- シェルからエスケープ\
し、正規表現で毎回再エスケープします。実際、この場合、すべての特殊文字が正しくエスケープされるため、二重引用符は必要ありません。 - シェルからバックスラッシュを介してエスケープし、正規表現でsetを使用します。 - はい、例はPOSIX互換環境で実行する必要があります!二重引用符の文脈では、特殊文字または改行文字の前に来ない限り、二重引用符の間はそれ自体を表します。あなたの場合は、シェルのように見えるか、POSIX規格に準拠していません。\
\
sed "s/[\\]//g"
\
[
]
sed "s/[\]//g"
\
$`"\
sed
そしてアポストロフィ使用している文字列を使用するか、短い方法を使用することもできます。
sed 's/[\]//g'
sed 's/\\//g'