Supprimer le dernier mot de chaque ligne de bash
Je suis en train de passer par un fichier, et de supprimer le dernier mot de chaque ligne. Actuellement, je suis en utilisant la commande
sed 's/^*\n//' old.txt > new.txt
mais c'est qu'old.txt est le même que new.txt. Merci pour toute aide, et laissez-moi savoir si je peux clarifier la question. Aussi, afin de définir la "parole" je suis juste en utilisant des espaces.
OriginalL'auteur Michael Rauh | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Essayez les solutions suivantes.
\w*
correspond le dernier mot à l'intérieur du fichier et$
ancres de la recherche à la fin de la ligne.La raison que old.txt est sortant de l'new.txt est probable que votre expression régulière
^*\n
ne correspond pas à toutes les lignes dans les old.txt.g
est inutile parce que la regex ne peut correspondre qu'une seule fois par ligne de toute façon.Édité pour supprimer le g à la fin (la force de l'habitude). Pour ceux qui ne connaissent pas, le /g permet à plusieurs matches par ligne.
Merci pour l'aide! C'est plus simple que ce que je croyais être.
cette juste supprime le dernier caractère. selon votre définition du mot que vous souhaitez utiliser
\w\+
ou\S\+
au lieuOriginalL'auteur David Z.
Ce qui suit est une modification intégrée. AVANT L'EXÉCUTION DE QUELQUE CHOSE FAITES UNE SAUVEGARDE DE VOTRE FICHIER.
Si vous travaillez sur OS X, vous pouvez essayer ce qui suit
Si vous n'êtes pas intéressé par écrit directement dans le fichier d'origine, mais nous voudrions que la sortie imprimée.
OriginalL'auteur E1Suave