replace モジュール

2019/05/01

Ansible

 Ansible Documentation

replace – Replace all instances of a particular string in a file using a back-referenced regular expression.

 機能

  • ファイル内のすべての特定の文字列を別の文字列に置き換えます
  • 置き換え対象の文字列の指定には正規表現が使用できます

 パラメータ

パラメータ選択肢/
Default
説明
after-指定した文字列と一致した位置よりも以降を対象にする。文字列の指定に文字列の指定に正規表現を使用できる。before: と併用し、ファイル内の対象範囲を指定できる
backupno
・yes
yes を指定するとタイムスタンプ情報を含んだファイル名で path: で指定したファイルをバックアップする
before-指定した文字列と一致した位置よりも以前を対象にする。文字列の指定に文字列の指定に正規表現を使用できる。after: と併用し、ファイル内の対象範囲を指定できる
path
※必須※
-変更対象のファイル
regexp
※必須※
-置換対象の文字列。文字列の指定に正規表現を使用できる
replace-置換後の文字列
validate-変更内容をファイルに保存する前に内容を検証するコマンド。ファイル名は引数 %s に設定されてコマンドに渡される

 例

■ 置き換え対象のファイル testfile の内容
mae.1  item mae #1
naka.1 item naka #1
ato.1  item ato #1 
mae.2  item mae #2
naka.2 item naka #2
ato.2  item.ato #2
mae.3  item mae #3
naka.3 item naka #3
ato.3  item.ato #3
■ 文字列の簡単な置き換え
    - name: testfile 内のすべての文字列 mae を before に置き換える
      replace:
        path: ~/testfile 
        regexp: 'mae'
        replace: 'before'
実行結果
mae.1  item mae #1
before.1  item before #1
naka.1 item naka #1
ato.1  item ato #1 
before.2  item before #2
naka.2 item naka #2
ato.2  item.ato #2
before.3  item before #3
naka.3 item naka #3
ato.3  item.ato #3
■ 範囲指定ありの置き換え
    - name: testfile 内のすべての文字列 mae を before に置き換える(範囲指定あり)
      replace:
        path: ~/testfile 
        regexp: 'mae'
        replace: 'before'
        after: 'ato.1'
        before: 'mae #3'
実行結果
mae.1  item mae #1
naka.1 item naka #1
ato.1  item ato #1 
before.2  item before #2
naka.2 item naka #2
ato.2  item.ato #2
before.3  item mae #3
naka.3 item naka #3
ato.3  item.ato #3
■ 対象ファイルのバックアップを取る
    - name: 置換前に対象ファイルのバックアップを取る
      replace: 
        path: ~/testfile 
        regexp: 'ato'
        replace: 'after'
        backup: yes
実行結果
[workman@node-c0706 ~]$ ls -l
total 8
-rw-r--r--. 1 workman staff 168 May  1 21:00 testfile
-rw-r--r--. 1 workman staff 156 May  1 20:54 testfile.11818.2019-05-01@21:00:55~ ← バックアップファイル
[workman@node-c0706 ~]$
■ 正規表現 #1
    - name: testfile 内の文字列で先頭の mae を before に置き換える
      replace:
        path: ~/testfile 
        regexp: '^mae'
        replace: 'before'
実行結果
before.1  item mae #1
naka.1 item naka #1
ato.1  item ato #1 
before.2  item mae #2
naka.2 item naka #2
ato.2  item.ato #2
before.3  item mae #3
naka.3 item naka #3
ato.3  item.ato #3
■ 正規表現 #2
    - name: mae, naka, ato の後ろの番号を削除する
      replace: 
        path: ~/testfile 
        regexp: '#[1-3]$'
実行結果
mae.1  item mae 
naka.1 item naka 
ato.1  item ato 
mae.2  item mae 
naka.2 item naka 
ato.2  item.ato 
mae.3  item mae 
naka.3 item naka 
ato.3  item.ato 

カテゴリー

目次

QooQ