Escribir en el file después del partido en Kotlin

Nuevo en Kotlin, me gustaría insert una línea en el file después de una coincidencia específica en el file. Sé cómo hacer esto con sed de la siguiente manera:

sed "/some line in file/a some text I'd like to add after line" file 

Pero me gustaría entender cómo voy a hacer esto en Kotlin. Hasta ahora he llegado tan lejos como la interfaz printWriter, pero no veo nada que implique claramente un parámetro de compensación o expresión regular.

Hasta ahora tengo:

 File("file.txt").printWriter(...) 

¡Gracias!

GNU 'sed' no inserta / elimina / actualiza líneas en files, transforma una stream de input y proporciona opciones para enviar la secuencia de salida a stdout , a un file, o incluso a un file temporal que luego sobrescribe el file original después de la transformación está completo (esta es la opción --in-place ).

Aquí hay un código que debe comenzar, pero tenga en count que hay muchas maneras de almacenar y leer / escribir files, secuencias, etc.

 val file = File("file.txt") val tempFile = createTempFile() val regex = Regex("""some line in file""") tempFile.printWriter().use { writer -> file.forEachLine { line -> writer.println(when { regex.matches(line) -> "a some text I'd like to add after line" else -> line }) } } check(file.delete() && tempFile.renameTo(file)) { "failed to replace file" } 

Consulte también sed, un editor de flujo para get más detalles sobre cómo se transforman las secuencias de text.