ファイルから「[」文字を削除したいと思います。頑張った
sed -i 's/[//g' 'filename'
ただし、次のエラーが発生します。
sed: -e 式 #1、文字 6: 終了していない 's' コマンド
答え1
はい、その文字はグループ(括弧内の式)を[
開始するため、特別です。[...]
OpenBSDでは、sed
コマンドはより便利なエラーメッセージを提供します。
$ sed 's/[//g'
sed: 1: "s/[//g": unbalanced brackets ([])
[
すべての文字を削除するには、sed
文字をエスケープしてください。
sed -i 's/\[//g' file
または角かっこ式の中に入れてください。
sed -i 's/[[]//g' file
またはtr
、
tr -d '[' <file >file.new
また、試している式が実際に機能していることを確認するまで、内部編集を使用しないでください。sed
そうしないと、バックアップからデータを復元する必要があります。
答え2
質問は元々タグ付けされており、awk
実際の妥当な理由はありません。
awk '{gsub(/\[/, "")}1' file >newfile
これにより、削除されたすべてのファイルが印刷されて[
保存されますnewfile
。
以下を使用してgawk
内部で編集できます。
gawk -i inplace '{gsub(/\[/, "")}1' file
awk
しかし、ファイルに対して他のタスクを実行するために使用しない限り、私はこれらのいずれかを使用しません。