J’ai besoin d’une expression régulière pour correspondre à une ligne où nous avons seulement 1 caractère ASCII non imprimable, donc:
[[$ ligne = ~ REGEX]]
S’il vous plaît aider. Le code ASCII pour le caractère est (0x0A)
et je sais qu’il devrait être quelque chose comme: ^(0x0A)$
mais je ne peux pas le faire fonctionner.
MODIFIER
Mon code est:
while IFS= read -r line; do [[ $line =~ REGEX ]] && printf "SUCCESS" done < file
EDIT – c’est le fichier, il y a plus de code mais je le découpe
entrez la description de l’image ici
fichier: https://ufile.io/88965
Votre boucle while while read
lit votre fichier jusqu’à ce qu’il trouve un caractère de nouvelle ligne, puis affecte ce qu’il a lu jusqu’ici à la line
, en supprimant la nouvelle ligne.
Vous devriez donc être capable de détecter des lignes vides comme ceci:
while IFS= read -r line; do [[ -z $line ]] && printf "SUCCESS\n" done < file
Si vous voulez vraiment utiliser une expression régulière, vous pouvez utiliser ^$
, comme suggéré par d'autres dans les commentaires.
Si votre objective est de produire une sorte de sortie lorsqu'une ligne correspond à un modèle, vous devez utiliser un outil conçu à cet effet, tel que awk:
awk '/^$/ { print "SUCCESS" }' file
Comme il semble que vous ayez des problèmes avec les nouvelles lignes de style Windows, vous pouvez les convertir en style UNIX en utilisant dos2unix
ou un autre outil pour supprimer les retours chariot.