Je fais grep et sed et j'obtiens 2 lignes d'un fichier qui m'intéresse. Comment puis-je obtenir ces lignes sur une seule ligne se terminant par le nouveau caractère de ligne?
Maintenant je reçois:
pattern1
pattern2
Je voudrais obtenir pattern1 pattern2 \n
printf %s\\n pattern1 pattern2 | sed '$!N;s/\n/ /'
Réponses:
paste
:Cela dit: "lire une ligne de stdin (le premier
-
), lire une autre ligne de stdin (le second-
), puis les joindre avec un espace"une technique spécifique à bash:
réf: http://www.gnu.org/software/bash/manual/bashref.html#index-mapfile
la source
- -
? La commande est-elle comme ça?paste
comment vous souhaitez qu'il traite l'entrée. 2 à la fois. Ajoutez-en plus pour faire 3 à la fois.seq 10 | paste -d " " - -
.Je vais mettre trois versions différentes méthodes d'affilée
AWK
SED
TR
Et il y en a beaucoup plus.
la source
tr
solution engloutira la nouvelle ligne de fin, donc vous voudrez peut-être ajouter; echo
à celle-civous pouvez le faire en utilisant le script shell ou en ligne de commande, mettez simplement la sortie de la commande dans une variable puis
echo
elle:la source
*
ou?
) dans le résultat, les valeurs peuvent changer.$()
place .. et en utilisant printfprintf '%s\n' "$x"
printf '%s\n' "$x"
cela ne supprime PAS la nouvelle ligne "interne".Avec
sed
, vous pouvez faire ceci:N;
indiquesed
d'ajouter la ligne suivante dans l'espace de motif, doncsed
travaille maintenant avec les deux lignes.s/\n/ /
remplace le caractère de nouvelle ligne par un espace, "fusionnant" les deux lignes ensemble.la source
Un moyen simple de diriger la sortie vers
xargs
:Cela ne fonctionne qu'avec de petites sorties, car il est limité par le nombre maximum de caractères par ligne de commande. La plus grande valeur dépend du système, vous pouvez obtenir cette valeur en utilisant
getconf ARG_MAX
.la source
IFS se fera un plaisir de le manger si vous le souhaitez.
la source
envelopper votre sed / grep dans des crochets
lorsque votre commande d'origine était:
votre nouvelle commande serait:
N'obtient pas les espaces entre les lignes, mais vous pouvez toujours virer de bord sur un autre tuyau sed:
la source