Shell pour supprimer les lignes vides (lignes vides) dans le fichier

2020-05-22

Cet article décrit en détail la méthode d'utilisation du shell pour supprimer les lignes vides dans le fichier, apprendre la méthode de sed, awk, la détection des fichiers shell, les amis dans le besoin peuvent faire une référence.

cette section:
shell creux supprimer la ligne de fichier

1, une ligne vierge dans le document pour supprimer le shell


copiez le code le code est le suivant:

cat filename | sed -e '/ ^ $ / d'> nom de fichier

2. Conservez les 9 derniers fichiers, autres instructions de suppression de fichier


copiez le code le code est le suivant:

ls -t | awk '{if (NR> 9) {print $ 0}}' | xargs rm -f

attaché, variable spéciale PID

$$
Shell shell lui-même (ProcessID)
$! Processus d'arrière-plan de
Shell dernière exécution du PID
$? < BR> Code de fin (valeur de retour) de la dernière commande exécutée
$ -
Liste d'indicateurs définie avec la commande Set
$ *
Liste de tous les paramètres. Si "$ *" est entouré de "", tous les paramètres sont affichés sous la forme de "$ 1 $ 2… $ n".
$ @
Liste de tous les paramètres. Si "$ @" est placé entre "", tous les paramètres sont affichés sous la forme de "$ 1" "$ 2"… "$ n".
$ #
Nombre de paramètres ajoutés à Shell
$ 0
Nom de fichier Shell
$ 1 ~ $ n
Ajoutez à chaque valeur de paramètre de Shell. $ 1 est le premier paramètre et $ 2 est le deuxième paramètre ...
Détermine si le test
test -f est présent et est un fichier
-d est présent et est un répertoire
-e Si un fichier existe P>

test homme

7 détermine les types de fichiers

test -f $ 1 && cat $ 1 Fichier trivial
test -d $ 1 && ls -ld $ 1 répertoire
test -L $ 1 && ls -ld $ 1 fichier de connexion
test -p $ 1 && ls -ld $ 1 fichier de pipeline
test -S $ 1 && ls -ld $ 1 socket
test -b $ 1 && ls -ld $ 1 bloc périphérique
test -c $ 1 && ls -ld $ 1 caractère périphérique

Voici quelques exemples pour votre référence.

1, un comparateur numérique d'amplitude


copiez le code le code est le suivant:!


# / bin / bash
test $ 1 -gt $ 2 && echo $ 1
test $ 1 -lt $ 2 && echo $ 2
test $ 1 -eq $ 2 && echo $ 1 = $ 2

2, jugez la chaîne de caractères


copiez le code le code est le suivant: !!


# / bin / bash
test $ 1 = $ 2 && echo
test inégal $ 1 = $ 2 && echo $ 1 = $ 2

3, jugement combiné
1),


copiez le code le code est le suivant:!


# / bin / bash
test $ 1 -gt 5 -a $ 1 -lt 10 && echo $ 1
si
#! / Bin / bash
si test $ 1 -gt 5 (ou si [$ 1 -gt 5] Notez l'espace)
puis
echo $ 1
fi

2),


copiez le code le code est le suivant:


# / bin / bash ping -c 1 -W 1 192.168.0. $ 1 &> / dev / null (-c 1 signifie ping une fois, -W le délai d'attente inaccessible de l'hôte cible est de 1 seconde)
si [$? -Eq 0]
puis
lien d'écho OK
esle
lien d'écho non
fi

SHELL supprime les lignes vides ou les lignes vides deux du fichier:

Aujourd'hui, j'ai trouvé qu'il y avait trop de lignes vides dans un fichier et je prévois de supprimer les lignes vides.

Donc, en utilisant sed, j'ai vérifié la commande et écrit ceci:

sed '/ ^ $ / d' fichier1

Il est inexplicable de constater qu'il y a encore beaucoup de lignes vides dans la sortie.

Donc: sed '/ ^ $ / p' file1 a trouvé qu'il y avait peu de lignes vides dans la sortie, mais en fait il y avait beaucoup de lignes vides.

Utilisez donc cat -A file1

Seulement constaté qu'il y a beaucoup de caractères d'espace dans la ligne d'origine, ce qui a empêché le régulier de la reconnaître comme une ligne vierge

Puis modifié en: sed '/ ^ * $ / d' file1 C'est OK

Notez également que le caractère de nouvelle ligne sous Windows est ^ M $

C'est $ sous LINUX. S'il s'agit d'un fichier sous WINDOWS, il doit être converti. L'utilisation de doc2unix semble être cet outil.

Le shell Linux supprime la troisième ligne de fichier:

Le fichier journal à vérifier récemment comporte de nombreuses lignes vides après l'extraction, ce qui n'est pas propice à la comparaison des fichiers précédents. Pour des raisons de compatibilité descendante, les lignes vides ne peuvent être supprimées que lorsqu'elles sont obtenues. Je l'ai googlé moi-même, en utilisant la méthode grep, l'efficacité est encore assez rapide, 73 lignes sur 25 000+ lignes sont des lignes vides, et je peux les obtenir en un instant.
Première méthode: (je viens d'utiliser celle-ci)
grep -v "^ $" pour supprimer les lignes vierges correspondantes
De plus, lors de la recherche d'erreurs, utilisez grep pour vérifier quelles lignes sont des lignes vides. Par conséquent, vous pouvez vérifier à partir du fichier journal d'origine qu'il n'y a pas de telles informations.
Ajoutez le paramètre -n grep -n "^ $" pour trouver la ligne vierge et accédez au fichier journal d'origine pour afficher les informations.


Méthode 2: commande filename
cat avec tr | tr -s '\ n'

Méthode 3: La commande sed
cat filename | sed '/ ^ $ / d '

méthode IV: commande awk
nom de fichier cat | awk' {(! $ 0 = "") si impression} '
nom de fichier cat | awk' {if (longueur! = 0) imprimer $ 0} '

www.xd1998.com@2001-2030Partage De Technologie