catコマンドを使用して$を£に置き換える

catコマンドを使用して$を£に置き換える

ドル記号 ( ) がいくつか含まれたファイル 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 £

答え3

sed説明したように、文字列のすべての出現を置き換えるために使用できます。ここ:

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

オプションは、ファイルを操作するように-i指示し、は文字列を置換するための演算子、は置換する必要のある文字列、は各文字を置換する文字列(特殊文字であるため記号をエスケープする)、およびすべてのインスタンスを置換することを意味します。seds\$$\g

編集:この-iオプションはSolarisでは動作しません。これ回避策。

関連情報