Je dois supprimer les nouvelles lignes vides du fichier texte dans le terminal.
Exemple de fichier
123
123
123
123
123
123
J'ai un peu cherché dans google, mais la seule solution trouvée était sed '/^$/d' myFile > tt
et cela n'aide pas. J'ai encore ces nouvelles lignes vides.
Vous pouvez utiliser grep à cette fin.
Essayez: grep -v ^$ filename
.
Votre commande semble également fonctionner:
$ cat t
123
123
123
123
123
123
$ sed '/^$/d' t
123
123
123
123
123
123
$ sed '/^$/d' t >tt
$ cat tt
123
123
123
123
123
123
$
tilisation de AWK: NF est la variable intégrée AWK qui stocke le nombre de champs dans chaque enregistrement. Lorsqu'il est utilisé par lui-même, il imprimera uniquement les lignes où NF! = 0.
[jaypal~/Temp]$ cat t
123
123
123
123
123
123
[jaypal~/Temp]$ awk 'NF' t
123
123
123
123
123
123
Il y a probablement 100 façons de le faire, en voici une:
grep -vE "$^" yourfile
La solution que vous avez publiée supprimera les lignes vides:
sed '/^$/d' myFile > output
Cela ne fonctionnera pas pour les lignes contenant des espaces, des onglets fixes ou tout autre type d’espace, y compris les retours à la ligne. Cela signifie que si votre fichier texte est originaire de Windows, cette solution ne fonctionnera probablement pas.
Sous Unix, les lignes sont simplement séparées par un saut de ligne. Sous Windows, ils sont séparés par un retour à la ligne et un saut de ligne.
Voici un moyen de supprimer les lignes vides, compatibles avec le format de texte de Windows:
sed '/^\x0D\?$/d' myFile > output
Si vous souhaitez supprimer les lignes ne contenant que des espaces, cela devrait fonctionner (au moins sur Ubuntu):
sed -r '/^\s*\x0D?$/d' myFile > output
Voici une autre solution:
python -c "import sys; print ''.join(line for line in sys.stdin.readlines() if line.strip() != ''),"
(python
est installé par défaut)
Utilisez grep pour les lignes vides:
grep . file
Ou essayez la méthode excompatible entre plates-formes) pour les lignes vides (contenant par exemple des espaces):
ex -s +'v/\S/d' -cwq test.txt
Pour plusieurs fichiers (éditer sur place):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Remarque: La commande :bufdo
n'est pas --- (_ posix _ .
Sans modifier le fichier (simplement imprimer sur la sortie standard):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin