Unix全般 -> sed

スラッシュの変換


URL="http://localhost/cgi-bin/index.cgi"  # 置換対象の変数
BASE="http://localhost/cgi-bin/"          # マッチングさせる変数


変数 $URL から $BASE 部分を除いた部分を表示させたい場合。

index.cgi を結果としたい場合、

$ echo $URL | sed "s/${BASE}//"
sed: コマンドが正しくありません: s/http://localhost/cgi-bin///
$


エラーになってしまう。

sed 's/変換前文字/変換後文字/' 
変換前文字または変換後文字に / が含まれるので sed のセパレータとしての / と
変換文字の / の区別がつかなくなるためである。

/ を変換文字として使用するには、変換対象の文字を以下のようにエスケープする

BASE_X=`echo $BASE | sed 's/\//\\\\\//g'`
$ echo $BASE_X
http:\/\/localhost\/cgi-bin\/
$

正しく変換された。
$ echo $URL | sed "s/${BASE_X}//"
index.cgi
$


※
置換前 を \/     (\1つ)
置換後 を \\\\\/ (\5つ) 

sed 's/\//\\\\\//g'

      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google