人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UNIXの、Cシェルでsedを使った文字列の置換方法について質問です。

「1 2 3」というタブで区切られた文字列を
「sed ’s/1 2 3/a b c/g’ ”hoge” >! hoge1」
というように、「a b c」というタブで区切られた文字列に置換したいのですが、このままではタブをうまく認識してくれません。

メタ文字のエスケープなどが関係するのかな?と素人ながら推測しているのですが、上記のことを実現するのに役立つページを紹介して下さい。

●質問者: hashi
●カテゴリ:コンピュータ
✍キーワード:hoge SED UNIX エスケープ シェル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ootatmt
●40ポイント

http://www.kt.rim.or.jp/~kbk/regex/regex.html

正規表現メモ

sed ’s/1¥t2¥t3/a¥tb¥tc/g’ ”hoge” >! hoge1


としてみてはどうですか。

◎質問者からの返答

なるほど、タブは「t」でいいんですか!

試してみましたがバッチリでした♪

ありがとうございます。


2 ● aki73ix
●20ポイント

http://nifberry.727.net/test/hatena151.cgi?test=aaa%201%202%203%...

タブに置換したい場合は

¥t を使います


#!/usr/local/bin/perl

  print qq(Content-type: text/html¥n¥n);

  $mthd=$ENV{'REQUEST_METHOD'};

  local($qu,@in,$key,$val);

  if($mthd eq 'GET'){

     $qu=$ENV{'QUERY_STRING'};

  }

  elsif($mthd eq 'POST'){

     read(STDIN,$qu,$ENV{'CONTENT_LENGTH'});

  }


  *datas = decode();

  $ax=$datas{'test'};

  open(FILE,">data/hoge");

  print FILE $ax; 

  close(FILE);

  system('sed "s/1 2 3/a¥tb¥tc/g" "data/hoge" ">data/hoge1"');

  open(FILE,">data/hoge1");

  @que = <FILE>;

  for($a=0;$a<$line;$a++){

    print $que[$a]; 

  }

  close(FILE);

  exit;


sub decode

{

  local(@query)=split(/&/,$qu);

  foreach(@query){

    tr/+/ /;

    ($key,$val)=split(/=/);

    $key=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

    $val=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

    $val=~s/`/¥[Illegal¥]/g;

    $val=~s/¥|/¥[Illegal¥]/g;

    $val=~s/¥r¥n/¥n/g;

    $vl2{$key}=$val;

  }

  return *vl2;

}


http://www.rfs.jp/sitebuilder/perl/02/02.html#5.エスケープシーケンス:detail]

文字のエスケープについてはこちらに詳細があります

◎質問者からの返答

参考になりました!


3 ● makeworld
●20ポイント

http://www.bookshelf.jp/texi/sed/sed-ja_3.html

GNU sedでしたら、¥tでタブを表記できます。

sed -e ’s/1¥t2¥t3/a¥tb¥tc/g’


上記が通らない場合は、shell scriptを作成して、ホンモノのタブキャラクタを記述することで置換できると思います。


#!/bin/sh

sed -e ’s/1タブ2タブ3/aタブbタブc/g’ ”$*”

◎質問者からの返答

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ