Notes
Afficher le résultat sans modifier le fichier
Sans -i, sed n’écrit que dans le terminal. Le fichier reste intact.
1
| sed -E '/^[[:space:]]*(#|$)/d' fichier.yaml
|
Voir uniquement les lignes qui seraient supprimées
1
| sed -n -E '/^[[:space:]]*(#|$)/p' fichier.yaml
|
Avec les numéros de ligne :
1
| grep -nE '^[[:space:]]*(#|$)' fichier.yaml
|
Comparer avant et après avec diff
1
| diff -u fichier.yaml <(sed -E '/^[[:space:]]*(#|$)/d' fichier.yaml)
|
Les lignes précédées de - sont celles qui seraient supprimées.
Dry-run sur plusieurs fichiers avec find
Le diff pour chaque fichier :
1
2
3
4
5
6
7
| find . -type f \( -name '*.yaml' -o -name '*.yml' \) -exec sh -c '
for f; do
diff -u "$f" <(sed -E "/^[[:space:]]*(#|\$)/d" "$f") 2>/dev/null \
|| diff -u "$f" - <<EOF
$(sed -E "/^[[:space:]]*(#|\$)/d" "$f")
EOF
done' sh {} +
|
Une version plus simple avec bash, qui gère bien <( ) :
1
2
3
4
5
| find . -type f \( -name '*.yaml' -o -name '*.yml' \) -print0 |
while IFS= read -r -d '' f; do
echo "=== $f"
diff -u "$f" <(sed -E '/^[[:space:]]*(#|$)/d' "$f")
done
|
Pour compter seulement les lignes qui seraient supprimées dans chaque fichier :
1
2
| find . -type f \( -name '*.yaml' -o -name '*.yml' \) \
-exec grep -cE '^[[:space:]]*(#|$)' {} +
|
Vérifier que le YAML reste valide avant d’appliquer
1
| sed -E '/^[[:space:]]*(#|$)/d' fichier.yaml | yq . >/dev/null && echo "YAML valide"
|
Quand le résultat vous convient, relancez la même commande avec -i (ou -i.bak pour garder une sauvegarde).