sedを使用して、SASファイル内のパターンを個別に変更するのではなく、検索して置換しています。問題は、マクロ変数を置き換えようとしていますが、アンパサンドを使用すると正しく処理されないことです。
Here's my code:
sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas
このコマンドを実行するたびに、元のテキストにあらゆる種類のファンキーなものを追加して実行するようです。
質問:アンパサンドを含むテキストをsedコマンドで置き換えるにはどうすればよいですか?
はい、右側の「&」は基本的に「左側で一致したすべて」を意味するため、「\」でエスケープします。単なるコメントではなく、答えにするべきです。
—
エドワードフォーク
私は他の誰でアップだけで頭が好奇心:)だった...最初の期間をエスケープする必要がdidntは
—
lucasdavis500
&
それはRHSで使用する場合にエスケープする必要がありますので、特殊文字がある-あなたのケースでは、あなたが実行する必要があり's/user=&uid./user=\&sysuserid./g'
、私はあなたが実際に必要とするので、あなたはまた、リテラルのドットを一致させるためにLHSのドットをエスケープする必要がある疑いがあるものの's/user=&uid\./user=\&sysuserid./g'