La suppression de la dernière ligne vide
Il y a un para de pause à la fin de mes .fichier csv. J'ai essayé de supprimer la ligne vide en fin de fichier à l'aide de la commande suivante.
sed -i '/^$/d' combined.csv
Mais il ne fonctionne pas et une ligne vide est toujours là. Je peux supprimer la dernière ligne à l'aide de la commande suivante.
sed -i '$d' combined.csv
Mais est-il possible de vérifier si la dernière ligne est vraiment vide, avant de l'enlever?
Mise à jour:
Je suis en utilisant la commande suivante pour vérifier si chaque ligne de départ avec un nombre.
sed -i '1s/^[^0-9]*//' combined.csv
Cette recherche uniquement la première ligne et pas le reste des lignes. Comment puis-je faire vérifier toutes les lignes dans le fichier? Cela pourrait résoudre mon problème.
OriginalL'auteur shantanuo | 2010-12-15
Vous devez vous connecter pour publier un commentaire.
Essayer
${/^$/d;}
cela ne correspondre à une ligne vide si c'est la dernière ligne du fichier.Mise à jour: pour votre deuxième question, il suffit de retirer le 1 avant le s, c'est à dire:
sed -i 's/^[^0-9]*//' combined.csv
${/^$/d;}
: La première$
signifie que la dernière ligne du fichier (vous pouvez limiter une commande à un numéro de ligne, et le montant moyen de la dernière ligne). Les accolades moyenne d'un bloc, et à l'intérieur du bloc-vous supprimer/d;
une ligne vide/^$
.OriginalL'auteur Bart Sas
Trouvé cet âge il y a quelque part et que vous économisé de l'extrait. Ne me demandez pas comment cela fonctionne:
Bon point, mais c'est facilement résolu:
perl -pe 'chomp if eof && /^$/' combined.csv
OriginalL'auteur elmimmo
Pour supprimer les lignes vides, vous pouvez utiliser
grep .
oused '/^$/d'
Il va supprimer toute ligne vide dans le fichier. J'espère que vous fichier n'a pas de lignes vides dans le milieu, mais cela fonctionne dans votre cas.
cat combined.csv | grep .
ou
cat combined.csv | sed '/^$/d'
OriginalL'auteur Alex Raj Kaliamoorthy
Je l'ai essayé avec sed (GNU sed) 4.2.2 et a obtenu toutes les lignes vides supprimé non seulement la ligne vide si c'est la dernière ligne du fichier.
J'ai trouvé la Commande suivante, qui a travaillé pour moi qui fait le Travail.
Cette Commande est à partir d'une Collection de utile SED-Oneliners:
http://sed.sourceforge.net/sed1line.txt
$ {/^$/d;}
devrait fonctionner très bien, avec tout compatible POSIXsed
. Essayezsed '$ {/^$/d;}' <<<$'a\n\nb\n'
et vous verrez que seule la dernière ligne est supprimée.Un autre fait quelque chose de différent: il garnitures tous extra fin des sauts de ligne, et pas seulement le dernier, et il lit aussi la totalité du fichier à la fois, ce qui est inutile dans ce cas et problématiques avec de gros fichiers.
OriginalL'auteur Kaot