• ベストアンサー

sedコマンドで、教えてください。

nightowlの回答

  • 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 に保存されます。

関連するQ&A

  • sed コマンドについて

    はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 linuxのシェルファイルが100以上あり、こちらの全ファイル内に含まれる文字列"ABCDE"を文字列"12345"に置換をしたいと思っています。 sed コマンドで sed -e "s/ABCDE/12345/g" *.csh のように実行しても、画面上に変換後が表示されるだけで その後、ファイルを見ても置換されていません。 どのようにすれば、全ファイルが修正されるのでしょうか。 以上です。回答の方をよろしくお願い致します。

  • sedコマンドについて

    sedコマンドについてご存知の方いたらお願いします。 cn: main=bread, fruit=apple, drink=coffee, dessert=cake といった文字列があった場合、 fruit=apple だけを「sed」コマンドを使用して 表示あるいはファイルへ出力する方法を教えていただけないでしょうか。 よろしくお願いします。

  • DOUBLE型の16進HEX文字列変換について

    12バイトのHEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)などを をいったん、10進に変換し、DOUBLE型の変数に設定し、 数値演算を行い 再度HEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)に変換を行いたいのですが、 変換の方法がわからず困っています。 HEX関数はLONGでしかおこなえないようで・・ すみませんが、ご教授いただけると助かります。 宜しくお願いいたします。

  • hp-uxのsedコマンドについて教えてください

    hp-uxのコマンドで困っております。 どなたか知恵をお貸しいただけたらと思います。 あるファイルより条件に合致する特定の文字列の置換を行い別のファイルとして保存したいと考えております。 このときに以下のsedのコマンドを利用しているのですが、一部上手くいかなくて難儀しております。 コマンド(※文字列の前後にわかりやすく<>を付けていますが実際には入力しません) sed "/<文字列(1)>[^0-9]/"s"/<文字列(1)>/<文字列(2)>/"g aaaa.txt > bbbb.txt コマンドの内容 aaaa.txtの中を検索し文字列(1)かつ文字列(1)のすぐ後ろの文字が数字でない場合(例えばIPアドレスで10.xxx.xxx.1というIPアドレスを置換したい場合に10.xxx.xxx.10や10.xxx.xxx.100を含めないようにする場合です)、文字列(1)を文字列(2)に置換しbbbb.txtに保存する。 (※上記コマンドのみだと条件に合致する文字列のたびにbbbb.txtが上書きされるため一番最後の条件に合致する文字列しか置換されませんので、実際にはコマンドのたびにbbbb.txtをaaaa.txtに上書きコピーするステップを入れています) この際、困っておりますのが元ファイルaaaa.txtにある各行の文字列が以下の場合に認識がされず置換が行われない点です。 (1)10.xxx.xxx.1<タブ>xxxxxxxxxの場合(※条件に合致する文字列のすぐ後ろにタブ文字が入っている場合) (2)10.xxx.xxx.1<改行>の場合(※条件に合致する文字列のすぐ後ろが改行となっており同一行にそれ以上文字が存在しない場合) 上記の(1),(2)のような行は置換が行われず、元の値のままとなってしまいます。 これらを解決する方法がありましたらよろしくお願いいたします。

  • sedコマンドに関して

    サーバーにあるファイルの中身を置換する為 Tera Termのsedコマンドを使おうとしたのですが 文字列の「'」が置換できません。 以下のように入力してみましたがだめでした。 sed -e 's/'/'aa/g' text1.txt > text2.txt sed -e 's/\'/\'aa/g' text1.txt > text2.txt 出来ないんでしょうか!? 宜しくお願いいたします。

  • エクセルの16進と2進の扱いに関して

    お世話になります エクセルの16進と2進の扱いに関して教えてください DEC2HEX,DEC2BIN,HEX2BIN,BIN2HEX等を使って、 相互に数値を変換し表記する場合 (1) 16進の扱い時、0xを付ける、もしくは認識させる方法 (2) 16進の扱い時、2桁ずつ区切り-を間に入れた表記にする方法 (3) 2進の扱い時、4桁ずつ区切り空白を間に入れた表記にする方法 (4) 2進で扱える値をもっと大きくしたい(現在は255(ff)との2進変換まで) (とりあえず32Bitまででもできればたすかります) このような時、セルの書式設定等はどのように設定すればよろしいのでしょうか、 ご存知の方、ご教授お願いいたします。

  • sedについて

    下記ファイルをsedにて処理したいのですが皆様のお知恵をお貸し下さい ファイル 0,,,0,0,1,0,2,-50,0 上記ファイルの6番目,の前の1を0に書き換えたいのですが可能でしょうか? ファイルは,で区切られていて,の数と数字はランダムで変わりますので,のn番目の前の文字で検索出来れば良いのですが

  • テキストファイルを読み込んで新たなファイルに書き出すには?

    最近C++を始めたばかりの初心者なのですが、「テキストファイルの中の空白をタブコードに変換して、新たなファイルに書き出す。」という事をやりたいのですが未熟ゆえに、サッパリわかりません…。どのようにすれば出来るのでしょうか?サンプルとして書いていただけると助かります。お願いします。

  • sedコマンドでのエスケープ文字の扱い

    はじめまして。Linuxのsedコマンドで困っています。 sedの置換文字列として連続する\をリテラルとする処理を考えていますが、\がいくつ入ってくるか(変数)、わからない場合において、複雑な処理なしに対処できないか、考えています。 ↓簡単な例ですが、コマンドベースで説明すると以下のようなものです。 $ var='\\' $ cat file.txt aa $ sed "s/.*/$var/" file.txt \ という結果になりますが、置換文字を変数から取る際に、連続する\が設定されるケースを想定したプログラムを組むたいと思っています。 \が入ってくる個数がわかるのであれば、\を2倍にセットしておけばできそうですが、いくつセットされてくるかはわからない場合、何かよい方法はないでしょうか。 念のため、Linux環境で、GNU sed 4.1.2版で試行しています。シェルはbashです。よろしくお願いします。

  • grep,sedコマンドについて

    昨日に引き続き、またまた質問です。 昨日回答してくださった方、ありがとうございました。 その後自分でも色々勉強しまして、ファイルの中身を処理するにはgrepコマンドとsedコマンドが 有効である事が分かりました。 今回やりたいことは以下のファイルの数字と時間の部分(//のついている2行)の削除です //1 //00:00:03,600 --> 00:00:07,195 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx //2 //00:00:07,360 --> 00:00:09,635 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx     ・     ・ (実際のファイルには"//"はついていません) 理想の出力 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx (xxxxxの部分には英語の台詞が入ります) で、以下が自分が考えた方法です 1.sedコマンドのみで削除 $ sed "/[0-9]*\n[0-9][0-9].*/d" ファイル名 結果 ファイルの内容がすべて表示されるだけ (a) 2.grepコマンドで抽出しパイプ処理 まずgrepで削除部分を抽出 $ grep -P "^[0-9]*\n[0-9][0-9].*" ファイル名 結果 1    00:00:03,600 --> 00:00:07,195    2    00:00:07,360 --> 00:00:09,635         ・         ・    10    11         ・         ・ となり、1~9までの数字と時間はちゃんと表示され 10以降は数字しか出ません。 (b) また -P の部分を -E にすると、何も表示されません (c) (perlの正規表現と拡張正規表現の違いはここでは無いように思えますが・・・) 2は最初でつまづいたのでどのコマンドに渡して行を削除するかはまだ分かりません (d) 削除の際、2行まとめて行うのは、一行ずつ行うと、台詞の部分に数字のみが入っていた場合 削除されるのを防ぐためです 以上長くなりましたが(a)~(d)の質問、疑問に回答していただけると嬉しいです。 よろしくお願いします。