ファイルから特定の文字「[」を削除する

ファイルから特定の文字「[」を削除する

ファイルから「[」文字を削除したいと思います。頑張った

 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しかし、ファイルに対して他のタスクを実行するために使用しない限り、私はこれらのいずれかを使用しません。

関連情報