🐕
vi できないときに、特定の行の内容を変更したい
特定の条件で vi など使えずに、困ったことに .conf 的なファイルが更新できなくなることがありますよね。あるんですよ。あったんです。
そんなときでも、sed
があればある程度どうにかなるんだけれども、設定ファイルに限ってまったく同じような置換ルールが適用されて、大惨事を引き起こすこともある。しかし、行数を指定すれば、余計な被弾も減らせる。
しかし、その .conf が数百、数千行あったら...。
cat -n する
安心せよ、less や view でなくとも、行数を表示できる。cat -n
だ。えらい。
こちらはとある某NASの設定ファイル。こんな感じで行数と共に表示できる。
:
487 [Versioning]
488 Root = /share/CACHEDEV1_DATA/.versioning/
489 Enable = FALSE
490 QBox = FALSE
491
492 [QPKG Management]
493 Have_Invalid_QPKG = FALSE
494 Ignore_Cert = FALSE
495
496 [Push Notification]
497 Level = 3
498
499 [TimeMachine]
500 User Name = TimeMachine
501 Storage Type = 1
502 Capacity = 0
503 Enabled = TRUE
:
sed '行数s/置換前/置換後/' する
こうなったら、あとは行数を指定するだけ。今回は 503行目の Enabled = TRUE
を Enabled = FALSE
にしたければ
sed '503s/TRUE/FALSE/'
だけ。この .conf ファイル。なんというクセの強さか、Enable
で指定されるものが多すぎて、行数を指定するしかなかった。ので、結果、このような方法をとることになるという。
Discussion