Temukan dan ganti dari Terminal dan tulis ke file baru dengan nilai yang diganti


0

Saya punya file template.jou yang memiliki format berikut:

/codeline1
/codeline2
/var = var
/codeline3

Sekarang saya ingin mengganti var berpisah dengan nilai yang berbeda suka A, B dan C dan kemudian tulis isi template.jou dengan nilai yang diganti ke file baru.

Saya mencoba yang berikut ini:

sed -n 's/var/A/gpw A.jou' template.jou

Tetapi ini hanya mencetak garis yang cocok dengan pola (yaitu /var = A ) ke file baru A.jou tempat saya ingin file lengkap seperti ini:

/codeline1
/codeline2
/var = A
/codeline3

Saya juga sudah mencoba:

sed -i '.bak' 's/var/A/g' template.jou

Ini menggantikan file template.jou dengan konten baru, tapi saya ingin itu mengubah nama file juga sehingga file baru disebut A.jou.

Jawaban:


1

Anda mungkin hanya ingin mengarahkan ulang output dari sed ke file lain:

sed 's/= var/= A/g' template.jou > A.jou

Pastikan Anda mengganti hanya tugas, mis. dengan mencocokkan = var hanya.


Catat itu 's/var/A/gp akan tidak mencapai apa yang Anda inginkan, sejak itu var akan diganti secara global, dan penggantinya akan dicetak lagi. Anda akan mendapatkan output ini sebagai gantinya:

/codeline1
/codeline2
/A = A
/A = A
/codeline3

Juga w pengubah hanya mencetak bagian yang dimodifikasi ke file yang ditentukan setelah itu, yang berarti Anda A.jou hanya akan berisi /var = A dan tidak ada lagi. Inilah sebabnya mengapa Anda harus mengarahkan keseluruhan sed output ke file lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.