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.

Saaru Lindestøkke
sumber

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.

slhck
sumber