GNU/Linux >> Linux の 問題 >  >> Linux

Sedコマンドで一度に複数のパターンを使用する

これは、私たちの常連の読者の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_USERSLURM_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.txt 

Sedで一度に複数のパターンを使用する

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
  1. Duコマンドで–excludeを使用しますか?

  2. Sedコマンドを使用した後にファイルを保存しますか?

  3. sedを使用してテキストを同じ長さに置き換えます

  1. スマートクォートをLinuxsedコマンドに置き換えます

  2. sedを使用してコマンドラインでテキストを操作する

  3. 複数のパターンでGrepを実行する方法は?

  1. 特殊文字でSedを使用していますか?

  2. 複数のファイルテキストをSedに置き換えますか?

  3. Linuxで一度に複数のファイルの名前を変更する方法