2017-01-16 2 views
2

文字列「???」の出現をすべて削除するにはどうすればいいですか?ファイルを保存して保存しますか?Unix文字の出現をすべて削除して保存する

これまで

私のアプローチ:

cat file.txt | sed -ie '/s/???//' file.txt 

私は次のエラーを取得するしかし:

sed: -e expression #1, char 4: unknown command: `?' 
+0

@anubhavaファイルの内容の一部 –

+1

'' sed ''/??? // g 'file.txt' – anubhava

+2

@anubhavaこれを答えとして追加してください。 'cat ... |' *使用しないでください:)。それは私が貢献しなければならないすべてのものであり、それだけで答える価値はありません。ありがとう! – cxw

答えて

3

あなたはこのsedコマンドを使用することができます。

sed -i 's/???//g' file.txt 

使用する理由はありませんcatここにsedはファイル上で直接操作してiを保存できますtインラインで。

はまた、他の正規表現のフレーバーとは異なり、特別な正規表現のメタ文字として?を扱わないsedのデフォルトの正規表現エンジンであるBRE(基本正規表現)は、したがって、ここで?をエスケープする必要がないことに注意してください。

+1

私は疑問符を逃れるだけでなく、あなたが**エスケープしてはいけないと思っています。私はsedにあまり経験はありませんが、[このドキュメント](https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html)から、私は、エスケープすること(バックスラッシュで接頭辞を付けること)はあなたは実際にはそれを正規表現演算子に変換します。少なくともこれはGNU sedに当てはまります。 – user1934428

+0

はい、GNU sedでは、デフォルトのBREモードで疑問符をエスケープしないでください。 – anubhava

関連する問題