Comment concaténer stdin et une chaîne?

Comment concaténer stdin à une chaîne, comme ça?

echo "input" | COMMAND "ssortingng" 

et obtenir

 inputssortingng 

Un peu de piratage, mais cela pourrait être le moyen le plus court de faire ce que vous avez demandé dans la question (utilisez un tube pour accepter la echo "input" stdout de echo "input" en stdin vers un autre processus / commande:

 echo "input" | awk '{print $1"ssortingng"}' 

Sortie:

 inputssortingng 

Quelle tâche essayez-vous exactement d’accomplir? Plus de contexte peut vous donner plus d’orientation sur une meilleure solution.

Mise à jour – en réponse au commentaire:

@NoamRoss

La façon la plus idiomatique de faire ce que vous voulez est alors:

 echo 'http://dx.doi.org/'"$(pbpaste)" 

La syntaxe $(...) est appelée substitution de commande . En bref, il exécute les commandes contenues dans un nouveau sous-shell et substitue sa sortie stdout à l’endroit où $(...) été invoqué dans le shell parent. Donc, vous auriez, en effet:

 echo 'http://dx.doi.org/'"rsif.2012.0125" 

utilisez cat - pour lire à partir de stdin, et placez-le dans $() pour jeter la nouvelle ligne

 echo input | COMMAND "$(cat -)ssortingng" 

Cependant, pourquoi ne pas laisser tomber le tuyau et récupérer la sortie du côté gauche dans une substitution de commande:

 COMMAND "$(echo input)ssortingng" 

J’utilise souvent des pipes, donc c’est un moyen facile de préfixer et de suffixer stdin:

 echo "my standard in" | cat <(echo "prefix... ") <(cat -) <(echo " ...suffix") prefix... my standard in ...suffix 

Vous pouvez le faire avec sed:

 seq 5 | sed '$a\6' seq 5 | sed '$ s/.*/\0 6/' 

Dans votre exemple:

 echo input | sed 's/.*/\0ssortingng/'