Script ini menggunakan sed untuk mengubah semua "" menjadi "hal baru". Bagaimana seseorang akan mengubah hanya "" setelah yyy: menggunakan sed atau apa pun?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Script ini menggunakan sed untuk mengubah semua "" menjadi "hal baru". Bagaimana seseorang akan mengubah hanya "" setelah yyy: menggunakan sed atau apa pun?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Jawaban:
Saya mungkin tidak mengerti pertanyaan Anda. Jika Anda ingin mengganti HANYA nilai setelah 'yyy' maka gunakan jawaban sebelumnya. Jika Anda ingin mengganti nilai APAPUN setelah 'yyy', coba satu baris ini:
sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt
Belum mengujinya: D ...
Jawaban diperoleh dari O'Reilly - Sed & Awk Penambahan ke-2 Di Sekitar halaman 152
Tulis skrip dalam file
/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}
Terapkan ini ke data Anda dengan yang biasa
sed -f script sample.txt
Script ini mengatakan mencari yyy :. Ketika ditemukan baca baris lain ke dalam buffer pola (terdengar seperti Star Trek Transporter). Sekarang lakukan sebagai / perintah pada baris yang bergabung. Jadi kami mencari yyy: baris baru "". Jika ditemukan ganti dengan yyy: \ notice backslash newline aktual maka "new stuff"
Semoga berhasil