この連載では、Linux を使いこなすためには、必須の項目と言えるテキストエディタ Vi の使い方を解説していきます。この講座が終了する頃には皆さんが使いこなせるよう、判りやすく解説します。
第1回目に作成した、“.cshrc.test”というファイルを例に、Vi による置換機能を試してみましょう。
[hpc@z800 ˜]$ vi .cshrc.test
小文字の [ r ] を入力してください。カーソル上の文字が次に入力する文字に 置換されます。
小文字の [ R ] を入力してください。カーソル上の文字が [ Esc ] が押される まで置換を続けます。
次は、単語や文字列単位での置換を行います。まずは、前回の復習です。Intel という文字列を検索してください。検索を実行する直前の画面最終行は、次の様な表記になっているはずです。
/set
コマンドモードで [ : ] を押下し、続けて substitute/INTEL/PGI/g と入力してください。画面最終行が次のように変わったはずです。
:substitute/INTEL/PGI/g
[Enter] キーを押下すると、カーソル行に INTEL の文字列が含まれている場合、当該文字列が全て PGI に置換されます。最後の g フラグは、global を意味し、カーソル行に複数回 INTEL が出現した場合、全ての INTEL を PGI に置換するという意味になります。
※ここでは、説明のために:substitute と入力してもらいましたが、現実問題として長すぎるため、このコマンドが用いられることはありません。実際に用いる際は、substitute を省略した :s コマンドが用いられます。
:s/INTEL/PGI
sの前に % をつけると、ファイル内を全て置換します。
:%s/INTEL/PGI/g
[Enter] キーを押下すると、ファイル全体に対して、INTEL の文字列を検索し、全て PGI に置換されます。
:%s/INTEL/PGI/gc
尚、コマンド行末尾のgフラグの後ろに、続けてcフラグを付与すると、(「consult」の「 c 」です)置換毎に、本当に置き換えても良いか確認するプロンプトが表示されます。
replace with PGI (y/n/a/q/l/^E/^Y)? 4,5 Top
区切り文字は「/」だけはなく、「;」なども使えます。
:%s;set;get;g
指定行のみを置換することも可能です。
:3,5s/INTEL/PGI/g
3行目から5行目までのINTELをPGIに置換します。
set PGICOMPILER = 11.1
#set PGICOMPILER = 10.1
本当にお疲れさまでした。また次回お会いしましょう。
平日9:30~17:30(土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)