bash - supprimer - sed une ligne sur deux




Comment associer chaque deux lignes d'un fichier texte avec Bash? (2)

J'aime la simplicité de cette solution

cat infile | paste -sd ' \n'

192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3

ou le faire séparé par des virgules au lieu de l'espace séparé

cat infile | paste -sd ',\n'

et si votre fichier d'entrée a une troisième ligne comme timestamp

192.168.1.1
hostname1
14423289909
192.168.1.2
hostname2
14423289910
192.168.1.3
hostname3
14423289911

alors le seul changement est d'ajouter un autre espace dans la liste des délimiteurs

cat infile | paste -sd '  \n'

192.168.1.1 hostname1 14423289909
192.168.1.2 hostname2 14423289910
192.168.1.3 hostname3 14423289911

Avec un simple script bash, je génère un fichier texte avec plusieurs lignes comme ceci:

192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3

Maintenant, je veux reformater ce fichier pour qu'il ressemble à ceci:

192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3

Comment pourrais-je le reformater de cette façon? Peut-être sed ?


Voici une alternative au shell:

while read first; do read second; echo "$first $second"; done






text-files