$を£に置き換えるには、catコマンドを使用します。

$を£に置き換えるには、catコマンドを使用します。

ドル記号()を含むtest_output_archive.svdファイルがあります$。ドル記号をポンド()に置き換えるcatコマンドを使用して、シェルスクリプトInstall_dollar_pound.shを作成しました£。このスクリプトは Solaris 10 で実行され、ドルは予想通りに変更されました。 Solaris 11では、USDは置き換えられず、エラーは発生しません。

test_output_archive.svdの内容: ラインレンタル $9 OOBのみ $10

手順1でドル記号をポンドに変更し、手順2でジャンク文字を削除し、手順3で一時ファイルを削除し、手順4で名前を変更します**

Install_dollar_pound.shの内容: catテスト出力archive.svd | tr "\044" "\243" > temp_archive.svd cat temp_archive.svd | tr "\044" "\243" > temp_archive.svd tr -d "\302" > test_output_archive2.svd rm temp_archive.svd mv test_output_archive2.svd test_output_archive.svd

オペレーティングシステムを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 £

答え3

sed説明したように、文字列内の各項目を置き換えることができます。ここ:

sed -i 's/\£/\$/g' FILENAME

この-iオプションは、sedファイルの操作を指示し、s文字列を置き換える演算子、置換する必要がある文字列、\$各文字を置き換える文字列$\特殊文字なのでエスケープ記号)、gすべてのインスタンスを置き換えるという意味です。

編集する:この-iオプションはSolarisでは機能しません。これ解決策。

関連情報