これは、私たちの常連の読者の1人であるマニッシュ氏からの質問です。彼の質問は、LinuxでSedコマンドを使用して複数のパターンを一度に使用して削除または置換操作を行う方法です。
次のテキストを含むサンプルファイルについて考えてみます。 (私は読者が求めたのと同じ例を使用しています。)
SLURM_CLUSTER_NAME =testSLURM_JOB_ID =525595SLURM_JOB_NAME =test1SLURM_JOB_USER =testSLURM_JOB_NODELIST =cn01SLURM_JOB_UID =5016SLURM_JOB_PARTITION =標準-lowSLURM_SUBMIT_DIR=/ home / testSLURM_TASK今、読者は単一の
Sed
を望んでいます パターンに一致する行を削除するコマンド–SLURM_JOB_USER
&SLURM_SUBMIT_DIR
ファイルから。それで、どうやってそれをしますか?どうぞ。行一致パターンを削除し、Sedで印刷
構文:
$ set'/ PATTERN/d'ファイル名$ sed'/ SLURM_JOB_USER / d'test.txt上記のコマンドは、パターン「
SLURM_JOB_USER
」に一致する行を削除します ‘および出力をstdoutに出力します。行一致パターンを削除し、Sedでファイルを変更します
構文:
$ set -i'/ PATTERN/d'ファイル名
'-i'
オプションはファイルを変更します。$ sed -i'/ SLURM_JOB_USER / d'test.txtSedで一度に複数のパターンを使用する
1つのSedコマンドで複数のパターンに一致する複数の行を削除する場合はどうなりますか?どうぞ
構文:
$ set -i'/ PATTERN1 / d; / PATTERN2/d'ファイル名$ sed -i'/ SLURM_JOB_USER / d; / SLURM_SUBMIT_DIR / d'test.txt上記のコマンドは、
SLURM_JOB_USER
を含む行を削除します およびSLURM_SUBMIT_DIR
パターンを作成し、ファイルを保存します。 1つのコマンド内で複数のパターンを入力する場合はセミコロン(;)に注意してください。パターンを置き換えて、Sedで印刷します
構文:
$ sed's / PATTERN / REPLACE_STRING / g'test.txt$ sed's / SLURM_JOB_USER / REPLACE1 / g'test.txt
'g'
グローバルを表します–最初の行だけでなく、各行のパターンのすべてのインスタンスを置き換えます(これはデフォルトの動作です)パターンを置き換え、ファイルをSedで変更します
$ sed -i's / SLURM_JOB_USER / REPLACE1 / g'test.txtオプション
'-i'
ファイルを変更します。Sedで一度に複数のパターンを使用する
$ sed -i's / SLURM_JOB_USER / REPLACE1 / g; s / SLURM_SUBMIT_DIR / REPLACE2 / g'test.txt単一のコマンド内にパターンを追加するには、セミコロン(;)を探してください。
大好きです?以下のコメントで質問がある場合はお知らせください。ここで取り上げます。
参照
Linux