
ファイルに制御Z(^ Z)文字があります。私は試しましたが、sed 's/^Z//g' file_name
成功しませんでした。 Perlスクリプトも試しましたが、削除しませんでした。このキャラクターを取り除く方法があれば教えてください。
答え1
生成された制御文字は8進数Ctrl+Zです。\032
以下から削除できますtr
。
tr -d '\032' <file >newfile
これにより、ファイル内のすべての文字が削除され、newfile
変更された内容で呼び出される新しいファイルが作成されます。
sed
式が行の先頭の文字^Z
と一致するため、コマンドは機能しません。残りの式を行の先頭にZ
固定します。^
答え2
10進コードと文字(この場合は26)をCtrl+Z使用して一致させることができます。\d
sed 's/\d26//g' < file > newfile
「posix」の代替(bash)は次のとおりです。
sed $( echo 's/@//g' | tr '@' '\032' ) < file > newfile
trは正規表現の「@」をcarachter Ctrl+Z(コードは8進数32)に置き換えます。
答え3
$ sed 's/\^Z//g' filename
メモ:特殊文字は「\」を使用してエスケープする必要があります。