カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

複数ファイル内の文字列を置換して上書き保存する

【ファイル内の文字列を置換して上書き保存する】
書式
perl -p -i -e ‘s/検索文字列/置換文字列/g’ 対象ファイル名

-p…入力ファイルから1行ずつ取り出して処理し、表示する。
-i…ファイルを修正する。拡張子を指定すると、その拡張子でバックアップを取ってくれます。
-e…直後に続く部分をスクリプトとして処理する。
s/検索文字列/置換文字列/g…文字列の置換。検索文字列を置換文字列に置き換える。最後の「g」(gスイッチ)を指定すると、1行に複数検索文字列がある場合、全て置換してくれる。なければ最初の1個だけ置換。

【複数ファイル内の文字列を置換して上書き保存する】
書式
find [検索開始ディレクトリ] [オプション] -exec perl -p -i -e ‘s/検索文字列/置換文字列/g’ {} \;

例1)

find . -type f -exec perl -p -i -e 's/test/test/g' {} \;

例2)拡張子等を限定するとき

find ./*.txt -type f -exec perl -p -i -e 's/test/test/g' {} \;

例3)指定したディレクトリ以下をすべて置き換えしたいとき

find . -name '*.txt' -type f -exec perl -p -i -e 's/test/test/g' {} \;

としたいところですが、これだとfindで検索対象のテキストファイルの更新日付が全て新しくなってしまいました。
正解は以下になります。

find . -name '*.txt' -type f | xargs grep -l 'test' | xargs perl -p -i -e 's/test/test/g'

拡張子を限定しないと、JPGやGIFファイルのバイナリファイルでもなんでもアクセスしてしまうので注意すべし。
詳しくはこちら→[findとgrepを使ってファイルの中身を一括検索と置換]

4,102 views

クリックでムービークリップの色変更

_root.[instance].onRelease = function ()
{
  var myColor = new Color(this);
  if(!this.flag)
  {
    this.trans = myColor.getTransform();
    myColor.setRGB(0xff9900);
    this.flag = true;
  }
  else
  {
    myColor.setTransform(this.trans);
    this.flag = false;
  }
}
2,129 views

座標範囲の算出

ある地点から指定した半径以内に該当する座標を絞り込みたいとき、検索に使用する値を得るサンプルです。

考え方としては、指定した半径を基に矩形を作成し、その範囲に含まれる座標を検索する、というものです。
残念ながら“指定した半径を基に作成した円の中に含まれる”ではありません。

通常は2点間の距離を算出し、半径以内に収まるかを出したほうがいいのですが、比較するデータが多い場合は1つ1つ処理しているとかなり負荷がかかります。
そのため、ざっくり検索する方法をご紹介します。

今回はPHPのコードですが、JavaScriptなど他の言語でも利用できます。

まず、算出に必要な度数毎の距離を宣言します。

// 緯度1秒の平均距離 約30.9m
// 緯度35度上の緯度1秒の距離 約30.8m
$lat_length = 30.9;

// 緯度35度上の経度1秒の距離 約25m
$lng_length = 25;

探したい範囲の半径(km)を設定します。 続きを読む…»

3,964 views

座標の変換

緯度・経度を日本測地系から世界測地系(WGS84)に変換する
コードは例としてPHPで書いています。

function cnvCoords($ido, $keido)
{
    $ido   = $ido - $ido * 0.00010695  + $keido * 0.000017464 + 0.0046017;
    $keido = $keido - $ido * 0.000046038 - $keido * 0.000083043 + 0.010040;

    return array($ido, $keido);
}

緯度・経度を世界測地系(WGS84)から日本測地系に変換する

function cnvDeCoords($ido, $keido)
{
    $ido   = $ido + $ido * 0.00010695  - $keido * 0.000017464 - 0.0046017;
    $keido = $keido + $ido * 0.000046038 + $keido * 0.000083043 - 0.010040;

    return array($ido, $keido);
}

※変換の際、経度を計算するために必要な緯度は、変換後の値であることに注意

Javaの場合 続きを読む…»

3,009 views

GoogleMap v3のmapオブジェクトのイベント

イベント 引数 説明
bounds_changed None このイベントは、ビューポートの境界が変更されると発生します。
center_changed None このイベントは、地図の中心プロパティが変更されると発生します。
click MouseEvent このイベントは、ユーザーが地図をクリックすると発生します(ただしマーカーや情報ウィンドウをクリックした場合には発生しません)。
dblclick MouseEvent このイベントは、ユーザーが地図上でダブルクリックすると発生します。この直前には、クリック イベントも発生します。
drag None このイベントは、ユーザーが地図をドラッグしている間に繰り返し発生します。
dragend None このイベントは、ユーザーが地図のドラッグを停止すると発生します。
dragstart None このイベントは、ユーザーが地図のドラッグを開始すると発生します。
idle None このイベントは、移動またはズームの後に地図がアイドルになると発生します。
maptypeid_changed None このイベントは、map TypeId プロパティが変更されると発生します。
mousemove MouseEvent このイベントは、ユーザーが地図コンテナ上にマウスオーバーすると発生します。
mouseout MouseEvent このイベントは、マウスが地図コンテナから離れると発生します。
mouseover MouseEvent このイベントは、マウスが地図コンテナ内に入ると発生します。
projection_changed None このイベントは、投影が変更されると発生します。
resize None DIV のサイズが変更される場合、デベロッパーは地図でこのイベントをトリガする必要があります: google.maps.event.trigger(map, ‘resize’)
rightclick MouseEvent このイベントは、地図のコンテナで DOM コンテキストメニュー イベントが発生すると発生します。
tilesloaded None このイベントは、表示タイルで読み込みを終了すると発生します。
zoom_changed None このイベントは、地図のズーム プロパティが変更されると発生します。
3,931 views