Bonjour,

je cherche à faire une modification d'un fichier texte, via un script bash.

j'ai un certain nombre de fichiers avec plusieurs lignes et je cherche à remplacer \n par un espace sur toutes les lignes qui se terminent par "(un caractère)\n" mais pas par "]\n"

Sur notepad++ j'utilise le regex "([^\]])\n" remplacé par "$1 ", pas de souci ça marche bien, mais sur ma debian impossible de le transposer, le résultat est inversé, ou est mon erreur ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
#!/bin/bash
# For all row in all text file in current dir, (try to) replace \n by space when previous character is not ]
for f in *.txt; do
    sed -i -E ':label1;N;$!blabel1;s/([^\]])\n/\1 /g' "$f"
done
(Sauf erreur de ma part :label1;N;$!blabel1; permet d'avoir 2 lignes en même temps sauf si c'est la dernière donc d'avoir les \n, a priori cette partie marche)