Ansible Documentation
replace – Replace all instances of a particular string in a file using a back-referenced regular expression.機能
- ファイル内のすべての特定の文字列を別の文字列に置き換えます
- 置き換え対象の文字列の指定には正規表現が使用できます
パラメータ
パラメータ | 選択肢/ Default | 説明 |
---|---|---|
after | - | 指定した文字列と一致した位置よりも以降を対象にする。文字列の指定に文字列の指定に正規表現を使用できる。before: と併用し、ファイル内の対象範囲を指定できる |
backup | ・no ・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