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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

771閲覧

テキストまたはDBの文字列パターンの置換(windows/Linux)

niboshi39

総合スコア6

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2021/05/24 15:11

前提・実現したいこと

社内のシステム移行を検討しています。
データの置換について、ご相談させてください。

データベースの中に、条件式を格納しています。
以下のような形です。

( SHOKUI = 'HOGE' AND AGE = '100' AND CATEGORY = 2 ) OR (LV = '100' AND AGE = '32' AND CATEGORY = '3' )

現在のシステムと移行先のシステムで値の意味が異なっており
現行のシステム CATEGORY = 2 は 移行先のシステムでは CATEGORY = 3
を指すため、CATEGORY 2 を指定している条件式を 3 に置換しようとしてます。

困っていること

条件式はユーザが画面から入力するため、インデントが統一されていなかったり、
演算子もバラバラです。置換が必要な項目も結構あります...

(例)
( SHOKUI = 'HOGE' AND AGE = '100' AND CATEGORY=2 ) AND ~
( SHOKUI = 'HOGE' AND AGE = '100' AND CATEGORY<>2 ) AND ~
( SHOKUI = 'HOGE' AND AGE = '100' AND CATEGORY <>   2 ) AND ~
( SHOKUI = 'HOGE' AND AGE = '100' AND CATEGORY != 2 ) AND ~

予定している対応と質問

レコード数が5000件程度なため、テキストでエクスポートし、
移行元・先が置換が必要な項目をGrepなどで検知し、手動で変えることを考えています。

shを組んで、正規表現などうまいことできないか試していたのですが
うまくいかず。

よい方法またはツールなどございますでしょうか。
参考になるサイトなどありましたらご教授いただけますと幸いです。

補足情報(FW/ツールのバージョンなど)

・環境 Windows / Linux
・対象 置換対象のファイルは テキストまたはDB

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

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

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

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

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

takasima20

2021/05/24 20:43

2 はクオートで囲まれてたりすることもありますか? あと、最初の例では CATEGORY = 3 がだぶることになりますが、そういうのは気にしなくてよい?
guest

回答1

0

ベストアンサー

正規表現に対応しているエディタで作業してみるとよいかと思います(サクラエディタ、mi等)。
ダブルクォーテーションが入っていない方のCATEGORYの置換は入らないように考慮しました。

text

1検索:「CATEGORY[  \t]*(=|<>|!=|>|<)[  \t]*2[  \t]*」 2置換:「CATEGORY $1 3」

ソース全体をよく確認して、想定外の場所が置換されないか気をつけてみてください。
場合によってはもう少し条件を厳しくした正規表現が必要かもしれません

投稿2021/06/22 01:52

madoka

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問