Ini pertanyaan dari salah satu pembaca reguler kami, Tuan Manish. Pertanyaannya adalah, bagaimana cara menggunakan beberapa pola sekaligus dengan perintah Sed di Linux untuk menghapus atau mengganti operasi.
Pertimbangkan file contoh yang berisi teks berikut. (Saya menggunakan contoh yang sama yang diminta pembaca).
SLURM_CLUSTER_NAME = test SLURM_JOB_ID = 525595 SLURM_JOB_NAME = test1 SLURM_JOB_USER = test SLURM_JOB_NODELIST = cn01 SLURM_JOB_UID = 5016 SLURM_JOB_PARTITION = standard-low SLURM_SUBMIT_DIR = /home/test SLURM_TASK_PID = 108983 SLURM_CPUS_ON_NODE = 1 SLURM_NTASKS = SLURM_TASK_PID = 108983
Sekarang pembaca menginginkan satu Sed
perintah untuk menghapus baris yang cocok dengan pola – SLURM_JOB_USER
&SLURM_SUBMIT_DIR
dari file. Jadi bagaimana Anda melakukannya? Ini dia.
Hapus pola pencocokan garis dan cetak dengan Sed
Sintaks:
$ set '/PATTERN/d' filename
$ sed '/SLURM_JOB_USER/d' test.txt
Perintah di atas akan menghapus baris yang cocok dengan pola ‘SLURM_JOB_USER
' dan mencetak output ke stdout.
Hapus pola pencocokan baris dan ubah file dengan Sed
Sintaks:
$ set -i '/PATTERN/d' filename
'-i'
opsi akan memodifikasi file.
$ sed -i '/SLURM_JOB_USER/d' test.txt
Menggunakan beberapa pola sekaligus dengan Sed
Bagaimana jika Anda ingin menghapus beberapa baris yang cocok dengan beberapa pola dengan satu perintah Sed? Ini dia,
Sintaks:
$ set -i '/PATTERN1/d;/PATTERN2/d' filename
$ sed -i '/SLURM_JOB_USER/d;/SLURM_SUBMIT_DIR/d' test.txt
Perintah di atas akan menghapus baris yang berisi SLURM_JOB_USER
dan SLURM_SUBMIT_DIR
pola dan simpan file. Perhatikan titik koma (;) untuk memasukkan beberapa pola dalam satu perintah.
Ganti pola dan cetak dengan Sed
Sintaks:
$ sed 's/PATTERN/REPLACE_STRING/g' test.txt
$ sed 's/SLURM_JOB_USER/REPLACE1/g' test.txt
'g'
mewakili global – ini menggantikan semua contoh pola di setiap baris, bukan hanya yang pertama (yang merupakan perilaku default)
Ganti pola dan ubah file dengan Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g' test.txt
Opsi '-i'
akan memodifikasi file.
Gunakan beberapa pola sekaligus dengan Sed
$ sed -i 's/SLURM_JOB_USER/REPLACE1/g;s/SLURM_SUBMIT_DIR/REPLACE2/g' test.txt
Cari titik koma(;) untuk menambahkan lebih banyak pola dalam satu perintah.
Suka? Beri tahu kami jika Anda memiliki pertanyaan di komentar di bawah dan kami akan mencoba membahasnya di sini.
Referensi