2023年04月26日 更新
どうも、クラゲジュニアです。
ちょっと特殊な使い方ですが、Linuxコマンドsed
を使って、特定の文字列を含む行を別の文字列で置き換える方法です。
例えば、以下のコードがファイル名code.py
として保存されていたとします。
#クラゲジュニアのカウントアップ
#
# ここら辺に複数コメントがあり、行数が増えるかもしれない
#
import time
COUNTER = 10 #カウンター定数
for i in range(COUNTER):
print(i)
time.sleep(1)
print('Done!')
コードエディタなど使わずに、コマンド一発でCOUNTER
の初期値を5
に変更したいとします。現状は10
が入っていますが、何の数値が入っているか知らなくても対応できるようにします。
具体的には sed "/対象文字列/c 変換後文字列" ファイル名
でできます。
sed -i "/COUNTER =/c COUNTER = 5" code.py
オプション-i
はファイルを上書きするという意味です。対象文字列をCOUNTER
のみにしてしまうと、変更したくない箇所も書き換わってしまうためCOUNTER =
にしています。
COUNTER = 10 #カウンター定数
がCOUNTER = 5
に書き換わっています。
#クラゲジュニアのカウントアップ
#
# ここら辺に複数コメントがあり、行数が増えるかもしれない
#
import time
COUNTER = 5
for i in range(COUNTER):
print(i)
time.sleep(1)
print('Done!')
ただし、他の行にもCOUNTER =
があった場合などは、そちらも書き換えられてしまうので、注意が必要です。また、より正確に行うならば正規表現を使うことをお勧めします。
以上です。