0
votes

Remplacer une nouvelle ligne avec le soulignement '_' dans la variable Bash

Je sais que je peux remplacer une nouvelle ligne avec un espace à l'aide de SED (dans un fichier) en utilisant xxx pré>

mais comment puis-je remplacer une nouvelle ligne avec un soulignement '_' dans un Bash variable forte>? p>

J'ai essayé de le remplacer par un espace pour le tester, mais cela n'a pas fonctionné voir ce que j'ai utilisé ci-dessous. P>

1st line_2nd line_3rd line


4 commentaires

SED ': A; N; $! BA; S / \ N / / G' <<< "$" STATION_TMP "?


Avec pure bash, vous pouvez faire var = $ {var / ^ m / _} ^ m est saisi comme ctrl-v Ctrl-M .


@accdias Control-M n'est pas une nouvelle ligne dans UNIX, ce n'est pas \ r (retour chariot) au lieu de \ n (LineFeed alias NEWLINE dans UNIX).


@Edmorton, toujours juste. :-)


4 Réponses :


4
votes

Pourriez-vous s'il vous plaît essayer suivi. XXX PRE>

où la valeur variable est la suivante: p>

echo "$var"
1st line
2nd line
3rd line


0 commentaires

6
votes

Vous pouvez le faire en bash lui-même: xxx

xxx


0 commentaires

1
votes

Ceci pourrait fonctionner pour vous (GNU SED et BASH):

<<<"$var" sed -z 'y/\n/_/'


0 commentaires

1
votes

Voici un autre qui fonctionne:

awk -v ORS="_" '1' <<<"$var"


0 commentaires