ファイルから一重引用符と二重引用符を削除しようとしています。 1つのsedコマンドで実行できますか?一斉引用符と二重引用符を同時に取り除くことに同意しました
私がしようとしています:
sed 's/\"//g;s/\'//g' txt file
が、このエラーに
を取得し、 `」 '比類のないです。
助けてください。
ファイルから一重引用符と二重引用符を削除しようとしています。 1つのsedコマンドで実行できますか?一斉引用符と二重引用符を同時に取り除くことに同意しました
私がしようとしています:
sed 's/\"//g;s/\'//g' txt file
が、このエラーに
を取得し、 `」 '比類のないです。
助けてください。
ではなく、この方法を試してください。
sed -e 's|["'\'']||g' txt
をさて、ここで私が来たものです。
まず、ord()で一重引用符と二重引用符のコードを見つけ、$(..)構文を引用符で囲まれていないsed式に渡しました。空の文字列の代わりにXXとyyを使用しました。明らかにそれは最適ではないので、おそらくそれらを1つの表現に組み合わせる必要があります。私はそれを試してみることをおすすめします。 問題を引用しないようにするにはいくつかの方法がありますが、sed式を別のファイルに入れてシェルが解釈しないようにすることもできます。 ord()/ chr()トリックは、出力中の単一の判読不可能な文字を処理しようとするときにも便利です。非UTFコンソール上のUTF文字列。
dtpwmbp:~ pwadas$ echo '"' | perl -pe 'print ord($_) . "\n";'
34
"
dtpwmbp:~ pwadas$ echo "'" | perl -pe 'print ord($_) . "\n";'
39
'
dtpwmbp:~ pwadas$ echo \'\"
'"
dtpwmbp:~ pwadas$ echo \'\" | sed -e s/$(perl -e 'print chr(34) . "\n"')/XX/g | sed -e s/$(perl -e 'print chr(39) . "\n"')/yy/g
yyXX
dtpwmbp:~ pwadas$
EDIT(この時間は、両方の文字が同じ文字列「YY」と置き換えられていることに注意してください)。それができなければならない。すなわち、文字コードとは逆に「翻訳」の文字のためのいくつかのシェルユーティリティがあるかもしれませんperlや他の言語インタープリターを使用せずにこれを行います。
dtpwmbp:~ pwadas$ echo \'\" | sed -e s/[`perl -e 'print chr(34) . chr(39)'`]/yy/g
yyyy
dtpwmbp:~ pwadas$
、ここではまだシェル内の別の方法だ、おそらく単純
dtpwmbp:~ pwadas$ X="'"; Y='"' ; echo $X$Y; echo $X$Y | sed -e "s/$X/aa/g;s/$Y/bb/g"
'"
aabb
dtpwmbp:~ pwadas$
あなたはシェルで焦がす引用符のペア内の単一引用符をエスケープすることはできません。しかし二重引用符をエスケープすることは許されています。以下のsedコマンドは動作するはずです:
sed "s/['\"]//g" file
これは正しい答えです。一重引用符で囲む必要がある場合は、一重引用符を入れる方法は ''\' ''です。 ''それはaliiiveです!''。 – jthill
別の可能性は、tr
を使用することです:
tr -d \'\" file
あなたは最終的な出力がある
sed "s/'/ /g" file.txt > newfile.txt
sed 's/\"//g' newfile.txt > Required_file.txt
Required_file.txt
以下のコマンドを使用することができます。
@ user2689092 note Imaneのソリューションは、sed式のエンクロージャを仲裁文字に置き換えた技術を使用しています。たとえば、sed -eの%aaa%bbb%g 'を使用して、元の入力に「%」がないと仮定して、aaaをbbbに置き換えることができます。 –