質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Vim

    512questions

    VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

GUIDの値を変えずに形式を変更したい(置換)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 427
退会済みユーザー

退会済みユーザー

xmlファイル内に記載されているGUIDの形式を変更したいのですが、乱数の部分を維持したまま前後に括弧をつけたいのですが乱数の部分をどうすれば維持できるのでしょうか?

現在の形式は

GUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"


の様になっておりこれを

GUID="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx}"


の形式へ置換を行いたいです。

正規表現での検索は行えましたが置換の仕方がよくわかりません。
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

vimなら以下、先頭の:はコマンドモード移行の:です。
:1,$ s/\(GUID="\)\([0-9A-F]\{8\}-\([0-9A-F]\{4\}-\)\{3\}[0-9A-F]\{12\}\)"/\1{\2}"/ig
vimのターミナル上でのスクリーンイメージは以下のようになります。

  1 <tag>GUID="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"</tag>
  2
~
~
~
:1,$ s/\(GUID="\)\([0-9A-F]\{8\}-\([0-9A-F]\{4\}-\)\{3\}[0-9A-F]\{12\}\)"/\1{\2}"/ig


の結果こうなります。

  1 <tag>GUID="{aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa}"</tag>
  2
~
~
~

sed なら以下

$ cat hoge.xml | sed -e 's/\(GUID="\)\([0-9A-F]\{8\}-\([0-9A-F]\{4\}-\)\{3\}[0-9A-F]\{12\}\)"/\1{\2}"/ig'

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/24 16:08

    すみません。
    最初の
    1,$
    はどういう意味でしょうか?
    ヴィジュアルモードで範囲指定をし上のコマンドを実行したのですが
    \(が釣り合っていません
    とエラーが出ました。

    キャンセル

  • 2017/02/24 16:13 編集

    行範囲指定です。
    1行目(1)から最終行($)を範囲として、続くコマンドを実行します。
    「ヴィジュアルモードで範囲指定」をせずに、コマンド内で行指定をしています。

    キャンセル

  • 2017/02/24 16:19 編集

    上記エラーは\が一つ抜けていました。
    ですがまだ検索自体がうまくできていません。
    質問に抜けていましたがGUIDにはダブルクォートが付きます。
    それを考慮して以下のコマンドを実行しました。
    何が間違いでしょうか?

    :'<,'>s/\(Guid="\\"\)\([0-9A-F]\{8}-\([0-9A-F]\{4}-\)\{3}[0-9A-F]\{12}\)/\1{\2}/gc

    キャンセル

  • 2017/02/24 16:30

    > 質問に抜けていましたがGUIDにはダブルクォートが付きます。
    質問内容が変更されたので回答も変更しました。
    質問する時は具体的に例を挙げて質問するようにしてください。

    キャンセル

  • 2017/02/24 16:36

    すみませんでした。
    無事できました。
    ありがとうございます。

    キャンセル

0

[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}

追記

置換
vim - 文字列置換

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/24 15:56

    /guid="[0-9A-F]{8}
    で検索してましたが検索ができませんでした。
    [0-9A-F]まではハイライトされているのですが繰り返しの{8}が認識されていないような感じです

    キャンセル

  • 2017/02/24 16:01

    正規表現そのものを書いたので、必要に応じてエスケープしなければなりません。

    キャンセル

  • 2017/02/24 16:06

    \{8}
    で検索はできましたが置換はできませんでした。。。

    キャンセル

  • 2017/02/24 16:39

    :s/[0-9a-f]\{8}-[0-9a-f]\{4}-[0-9a-f]\{4}-[0-9a-f]\{4}-[0-9a-f]\{12}/{\0}/gi
    でどうでしょう?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Cloud9でのロケール設定

    ブラウザだけで完結する便利なIDEである「Cloud9」を使っている方も多いと思います。 現在Cloud9を利用してPHPによるCMSを開発しておりますが、いざロケールの設定を確

  • 解決済

    sqlでupdateかinsertしたい際にuniqueキーなしでする方法

    下記のようなsql文を実行した際に、データがupdateされないのですが、uniqueキーを設定せずにupdateする方法があれば教えていただきたいです。 よろしくお願いいたしま

  • 解決済

    haskellによるGmailのSMTP認証エラー

    前提・実現したいこと HaskellによるSMTPでのGmailの送信を行いたいです. Gmailの設定は, 安全性の低いアプリの許可を有効にしており2段階認証は無効にしていま

  • 解決済

    squidのバージョンアップについて

    有識者の皆様 よろしくお願いします。 当環境にて、Cent5.11でsquidを運用しているサーバがあります。 sh-3.2# cat /etc/redhat-r

  • 受付中

    Running状態のEC2の取得について

    前提・実現したいこと Rubyからaws-sdkを使って、AWS上の起動中EC2インスタンスの取得を考えています。 サンプルコードについて調べていたら、以下を見つけたのです

  • 受付中

    ActiveXの実行時インストール

    ActiveXを<object>タグを利用して実行時インストールを行いたいと思っています。 dll,infをcab化し,テストhtmlにobjectタグを記載しIEで実行した

  • 解決済

    php mb_send_mailの送信元を指定できない

    最初XAMPPでmb_send_mailを使えるようにした時何をどうしたか忘れましたが、下記のコードでメールを送っても、testtest@gmail.comからメールが来ます。

  • 解決済

    Resqueのサービス停止をsystemctlでやると、ジョブ(子プロセス)が止まってしまう

    やりたいこと 1. Resqueのサービス停止時に子プロセスで動いているジョブが終了するまで待ってから、サービスを止めたい。 2. サービス起動停止をsystemctlでやりた

同じタグがついた質問を見る

  • Vim

    512questions

    VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。