上記のコードを試しました中かっこ間のテキストの削除
しかし、sedイベントでは他のエラーが発生しました。
ファイルには以下が含まれます。
This is {
{the multiline
text} file }
that wants
{ to {be
changed}
} anyway.
sed ':again;$!N;$!b again; s/{[^}]*}//g' file
運動中に何が間違っている可能性がありますか?
間違い
N: Event not found.
答え1
履歴拡張の実行を!
防ぐには、エスケープする必要があります。一重引用符で書いてcsh/tcsh
も、それでも履歴拡張を実行します。!
努力する:
sed ':again;$\!N;$\!b again; s/{[^}]*}//g' file
あるいは、呼び出すスクリプトを書くこともできます-f script.sed
(読むsed FAQ)。
答え2
よくわかりませんが、tcsh
歴史拡張の質問のように聞こえます。bash
一重引用符で履歴の拡張を防ぐことができます。そうでないかもしれませんtcsh
。
履歴拡張を無効にすることができます(しかし、どうすればいいのかわかりません。bash
で行いますset +H
)。
別のオプション:バックスラッシュエスケープが機能するはずです。努力する
sed_code=":again;\$\!N;\$\!b again; s/{[^}]*}//g"
sed "$sed_code" file