[BASH] sed, remplacer un pattern correspondant à tout sauf
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:
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)