- ベストアンサー
sedコマンドで、教えてください。
ファイル内のHex09(タブコード)1バイトを別の文字(例えば「1」)に変換したい場合はどのようにすればいいでしょうか? Hexの扱いがわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これは蛇足です。Ruby の例がなんか汚い、と思ってましたが ruby -pe 'gsub(/\x09/, "\x31")' hogefile これで綺麗になりました。「$_」というのは現在着目行のことで、 Perl でも以下のごとく暗黙裡にこれを使っているのです。 perl -pe '$_ =~ s/\x09/\x31/g' hogefile 再三の書き込み、失礼しました。
その他の回答 (2)
- nightowl
- ベストアンサー率44% (490/1101)
回答No.2
別の質問も見ましたが、任意の16進表記同士を変換しなければならないのですか? それだったら sed では力不足。AWK, Perl, Ruby の例を示します。 awk '{gsub(/\x09/, "\x31", $0); print $0}' hogefile perl -pe 's/\x09/\x31/g' hogefile ruby -pe '$_.gsub!(/\x09/, "\x31")' hogefile Perl と Ruby では -i.bak のようにすれば hogefile そのものが変更され、 元の内容はバックアップファイル hogefile.bak に保存されます。
- nightowl
- ベストアンサー率44% (490/1101)
回答No.1
こんにちは。sed で16進表記は使えましたっけ? ちょっと反則っぽいですがシェルでは Control-v を打てば 生のタブが入力できますので sed 's/(ここで C-v TAB)/1/g' hogefile のような感じでやってみてください。 # マルチポストは感心しませんけど。
お礼
ありがとうございました。 ほかでの書き込みは、何度書き込んでも、エラーで帰ってきましたから、何度も書き込んでいました。