ls -l でファイルの情報を見てみると、書き換えが反映されないファイルは、モードの表示の後に@がついています。
どのようにしたら、そのようなファイル内の文字列も置き換えて保存することができるでしょうか。
おそらく、拡張ファイル属性だと思います。
...なんですが、調べると MacOS X の話ばかりです。
パーミッションの横に着く@の意味 - a geek born in Tomakomai
MacOS X ということなので、FreeBSD 由来だと思いますが、「UNIX 全般」で通用する手順が、どうも無さそうに思われます。上記ページで紹介されている xattr コマンドは Solaris には無いみたいで、runat コマンドを使うみたい。
Solaris 9 リリースの新しいファイルシステム機能 (Solaris のシステム管理 (基本編))
なので、具体的な OS 名を挙げた方が、的確な回答が得られるかもしれません。
ls の -F で、@ がついてるのは、シンボリックリンクです。
sed による置きかえって、もしかしたら、こういうふうに書いてません?
sed -e "..." file > tmp mv tmp file
mv だと、シンボリックリンク自体を、実ファイルで置き換えてしまいます。
なので、シンボリックリンクが示している実体の方は変わっていません。
以下のようにすれば、リンク先のファイルの内容が書き変わると思います。
sed -e "..." file > tmp cp tmp file rm tmp
回答ありがとうございます。@がついているのはls -l で出てくる、権限表示の後ろです。以下のような感じです。
おそらく、拡張ファイル属性だと思います。
...なんですが、調べると MacOS X の話ばかりです。
パーミッションの横に着く@の意味 - a geek born in Tomakomai
MacOS X ということなので、FreeBSD 由来だと思いますが、「UNIX 全般」で通用する手順が、どうも無さそうに思われます。上記ページで紹介されている xattr コマンドは Solaris には無いみたいで、runat コマンドを使うみたい。
Solaris 9 リリースの新しいファイルシステム機能 (Solaris のシステム管理 (基本編))
なので、具体的な OS 名を挙げた方が、的確な回答が得られるかもしれません。
Mac OS Xです。
Mac OS Xです。