文字列を検索し、行の先頭に#を追加します。

文字列を検索し、行の先頭に#を追加します。

エディタを使用するのに手助けが必要ですvi

特定のユーザーに対してcrontabの1行をコメントアウトしようとしています。

これはcrontabの他の多くの行の1つです:

0,5,10,15,20,25,30,35,40,45,50,55 2-23 * * * /home/appuser/CPU_check.sh

そのため、viエディタ(crontab -e)で "CPU_check"文字列を検索し、行の先頭に#addを追加してコメントアウトしようとしています。

最後に、viエディタで2つの文字列(CPU_checkやMemory_checkなど)を使用して検索する必要がある場合は、文字列を含む各行の先頭に#を追加します。

答え1

第六中学校では

:g/CPU_check/s/^/#/

どこ

  • :viにコマンドモードに入るように指示する
  • ggなしで「グローバルに」適用(複数行の場合)は、最初の行にのみ適用されます。

  • /CPU_check/住所フィールドの一致CPU_CHECK

  • sデリゲート
  • /^/行の始まり(一緒に)
  • /#/ #シンボル

追加の代替実行

保存と終了

:x

答え2

あなたは使用された解決策が欲しいと明示的に言いましたvi。ただし、これは1行のsedコマンドでも達成できます。

sed -i -e 's/.*CPU_check/# &/' -e 's/.*Memory_check/# &/' crontab

このソリューションはインラインファイルを変更します。 sed呼び出しでフラグを変更してファイルのバックアップを保存できます-i-i.bak

答え3

vi」と仮定すると実際 vi(いいえvim):

:set extended
:g/(CPU|Memory)_check/s/^/#/

まず、検索モードで拡張正規表現を有効にしてから、set extended文字列またはを含むすべての行に置換s/^/#/#行の先頭に - 文字を挿入)を適用します。CPU_checkMemory_check

では、vim以下を使用できます。

:g/\(CPU\|Memory\)_check/s/^/#/

または

:g/\v(CPU|Memory)_check/s/^/#/

同じことをしてください。

エスケープを使用すると、パターンを拡張正規表現として認識できます\v。 「very Magic」の略です(参考資料参照)。vimvimv\v:help magicvim


ed拡張正規表現のサポートがない場合は、2つの別々の編集コマンドを使用できます。

g/Memory_check/s/^/#/
g/CPU_check/s/^/#/

sed拡張正規表現はそのオプションでサポートされています-E

sed -E '/(CPU|Memory)_check/s/^/#/'

または標準を使用してくださいsed

sed -e '/CPU_check/s/^/#/' -e '/Memory_check/s/^/#/'

関連情報