228 votes

Comment concaténer plusieurs lignes de sortie en une seule ligne ?

Si je lance la commande cat file | grep pattern j'obtiens de nombreuses lignes de sortie. Comment concaténer toutes les lignes en une seule, en remplaçant effectivement chaque ligne par une autre ? "\n" con "\" " (terminer par " suivi d'un espace) ?

cat file | grep pattern | xargs sed s/\n/ /g ne fonctionne pas pour moi.

337voto

iiSeymour Points 34967

Utilisez tr '\n' ' ' pour convertir tous les caractères de nouvelle ligne en espaces :

$ grep pattern file | tr '\n' ' '

Note : grep lit les fichiers, cat concatène les fichiers. Ne pas cat file | grep ¡!

Edit :

tr ne peut traiter que les traductions d'un seul caractère. Vous pouvez utiliser awk pour changer le séparateur d'enregistrement de sortie comme :

$ grep pattern file | awk '{print}' ORS='" '

Cela transformerait :

one
two 
three

à :

one" two" three"

102voto

bluebadge Points 959

Sortie de tuyauterie vers xargs concaténera chaque ligne de sortie en une seule ligne avec des espaces :

grep pattern file | xargs

Ou toute commande, par exemple ls | xargs . La limite par défaut de xargs La sortie est de ~4096 caractères, mais peut être augmentée avec eg. xargs -s 8192 .

grep xargs

94voto

user1699917 Points 469

Dans bash echo sans guillemets supprimer les retours chariot, les tabulations et les espaces multiples

echo $(cat file)

24voto

sehe Points 123151

Cela pourrait être ce que vous voulez

cat file | grep pattern | paste -sd' '

Quant à votre modification, je ne suis pas sûr de ce qu'elle signifie, peut-être ceci ?

cat file | grep pattern | paste -sd'~' | sed -e 's/~/" "/g'

(cela suppose que ~ ne se produit pas dans file )

12voto

Richard Gomes Points 1386

Voici un exemple qui produit des résultats séparés par des virgules. Vous pouvez remplacer la virgule par le séparateur de votre choix.

cat <<EOD | xargs | sed 's/ /,/g'
> 1
> 2
> 3
> 4
> 5
> EOD

produit :

1,2,3,4,5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X