ドル記号 ( ) がいくつか含まれたファイル test_output_archive.svd があります$
。シェル スクリプト Replace_dollar_pound.sh を生成し、cat コマンドを使用してドル記号をポンド ( £
) に置き換えました。このスクリプトは Solaris 10 では動作し、ドル記号は期待どおりに置き換えられます。Solaris 11 では、ドル記号は置き換えられず、エラーも発生しません。
test_output_archive.svd の内容: ラインレンタル $9 を OOB のみ $10 で提供
ステップ 1 でドル記号をポンドに置き換え、ステップ 2 で不要な文字を削除し、ステップ 3 で一時ファイルを削除し、ステップ 4 で名前を変更します**
Replace_dollar_pound.sh の内容: cat test_output_archive.svd | tr "\044" "\243" > temp_archive.svd cat temp_archive.svd | tr -d "\302" > test_output_archive2.svd rm temp_archive.svd mv test_output_archive2.svd test_output_archive.svd
OS が Solaris 11 にアップデートされる際に、何か変更は必要ですか?
答え1
は$
正規表現では特別な意味を持ち、「レコードの終わり」を意味します (ほとんどの場合、レコード = 行)。したがって、エスケープする必要があります。次を試してください。
sed 's/\$/£/g' file > outfile
答え2
sed コマンドでは特殊文字 ($) をエスケープできます。
$ cat test.txt
£ pound £
$ dollar $
£ pound £
$ dollar $
$ sed 's/\$/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £
あるいは
$ sed 's/[$]/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £