J'ai un fichier texte, où les enregistrements sont divisés sur deux lignes. Je voudrais les mettre sur une seule ligne. Les enregistrements ressemblent à ceci:
2013-07-29
apt-get install git
2013-07-29
apt-get install rsync
2013-07-31
apt-get install nmap
2013-08-02
apt-get install cifs-utils
2013-08-05
apt-get install telnet
J'aimerais obtenir ce qui suit:
2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
J'ai essayé avec sed
, mais je n'arrive pas à faire correspondre deux lignes. Y a-t-il une astuce sed
ou un meilleur outil?
text-processing
sed
Martin Vegter
la source
la source
Réponses:
N
joint la prochaine ligne d'entrée à l'espace de motifs/\n/ /
remplace la nouvelle ligne qui sépare les lignes par un espace.ou:
-n
désactive l'impression automatique de l'espace de motif comme dernière commande/regex/p
imprime des lignes correspondant à l'expression régulièreUtilisez le
g
modificateur pour les substitutions au cas où vous joigniez plus de deux lignes, par exempleN;N;N;s/\n/ /g
.la source
sed 's/>\n</>,</'
au travail jusqu'à ce que je réalise que sed travaille sur les lignes à la fois. une recherche rapide de duckduckgo et @peterph m'ont permis de garder le reste de mes cheveuxIl semble que les
apt-get
lignes aient un espace précédent. En disant:devrait produire le résultat souhaité.
Alternativement, vous pouvez également utiliser
paste
:la source