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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Vim

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

Q&A

解決済

2回答

1214閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Vim

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

0グッド

0クリップ

投稿2017/02/24 06:09

編集2017/02/24 07:22

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

現在の形式は

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

の様になっておりこれを

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

vimscreen

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

の結果こうなります。

vimscreen

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

sed なら以下

bash

1$ 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 06:43

編集2017/02/24 07:28
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/24 07:08

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

2017/02/24 07:18 編集

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

退会済みユーザー

2017/02/24 07:31 編集

上記エラーは\が一つ抜けていました。 ですがまだ検索自体がうまくできていません。 質問に抜けていましたがGUIDにはダブルクォートが付きます。 それを考慮して以下のコマンドを実行しました。 何が間違いでしょうか? :'<,'>s/\(Guid="\\"\)\([0-9A-F]\{8}-\([0-9A-F]\{4}-\)\{3}[0-9A-F]\{12}\)/\1{\2}/gc
Y.H.

2017/02/24 07:30

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

退会済みユーザー

2017/02/24 07:36

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

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 06:19

編集2017/02/24 06:22
Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/24 06:56

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

2017/02/24 07:01

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

退会済みユーザー

2017/02/24 07:06

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

2017/02/24 07:39

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問