- ベストアンサー
sambaで連携したファイルをLinuxからsedで置換する方法と文字化け問題の解決方法
- sedを使って文字列の置換をしたいと考えています。sambaでwindowsから連携したファイルに対して置換を行いたいのですが、うまく置換ができません。Linux側のGNOME端末からファイルの中身をのぞくと、全角の箇所が文字化けしてしまっていました。どうやら原因はこれだと思うのですが、どうすれば文字化けしていてもうまく置換できるでしょうか?あるいはLinux側から見ても文字が化けないようにするにはどうすればよいでしょうか?
- sambaで連携したファイルをLinux上でsedコマンドを使用して置換したいと考えています。しかし、ファイルの内容をGNOME端末から表示すると、全角の文字が化けて表示されます。これが置換できない原因だと考えていますが、どのように解決すればいいでしょうか?また、Linux側からも文字が化けないようにする方法も教えてください。
- sambaを使ってWindowsから連携したファイルに対して、Linux上で文字列の置換を行いたいです。しかし、ファイルの内容をGNOME端末から表示すると、全角の文字が文字化けして表示されます。この文字化けが置換できない原因だと考えています。どのようにすれば文字化けしていても正しく置換できるでしょうか?それともLinux側からも文字が化けないようにする方法があるでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
。。。んっと。。。 #2は あまりにはしょりすぎていて見当違いな投稿にもみえそうですね 失礼しました。 やりたいことをちょっと整理させてください。 【1】Shift_JISのファイルをUTF-8環境下で操作したい 【2】各行先頭から数えて、最初と二番目のタブに挟まれている部分を取り出す 【3】文字列の先頭1文字を『3』に置換する 【4】結果はShift_JISのままにしておきたい 。。。ということであっていますか? #2の回答は上記【2】の手順のみでした。よって【3】の処理もするなら awk '{ print $2 }' test.txt | sed -e 's/^./3/' で出来るとおもいます。(awkで置換までやればよさげなんですが、実はawkは得意では無いのでそこんとこよくわかりません。美しくないパイプ処理ですみません) それで、肝心の文字コードに関してですが、#3の方のご提示のようにnkfをパイプで繋げれば表示はされると思います。 nkf -w test.txt | awk '{ print $2 }' | sed -e 's/^./3/' 表示はされるのですが、もしかしてファイルにリダイレクトしたいとかだったら awk '{ print $2 }' | sed -e 's/^./3/' > test.out だけでいいかもしれません。文字コードに関する処理はないのでtest.outはShift_JISのままです。 ちなみに、Gnome端末なら表示するロケールをShift_JISに変えられます。 そうしておけばデータの文字コードを変換すること無く表示されるようになります。 Gnome端末のメニュー「端末」→「文字コードの設定」からどうぞ。
その他の回答 (3)
- junkUser
- ベストアンサー率56% (218/384)
結論としては以下のコマンドでいかがでしょうか。 nkf -w test.txt | awk '{ print $2 }'
- tux_the_penguin
- ベストアンサー率42% (69/163)
それsedじゃなくてawkじゃ? awk '{ print $2 }' test.txt
- junkUser
- ベストアンサー率56% (218/384)
提示されたコマンドを実行すると 3ああ になったんですが、予期された動作ですか? 文字コードの変換は nkf や iconv を使用してはいかがでしょうか。
お礼
ご返答ありがとうございます。 予期した動作としては、 3008年5月05日 なのですが、私の環境では置換以前の問題で、コマンド実行後も文字化けされたまま何もおきませんでした。 文字コードですが、windowsで保存したときはshift-jisだったのですが、utf-8で保存しなおせばできました。 しかし文字コードは変換しなおさなくはいけないのでしょうか? できれば変換することなくそのままやりたいのですが。。。