Supprimer le premier caractère connu d'une chaîne avec sed


12

Comment supprimer le premier caractère connu d'une chaîne avec sed?

Par exemple, disons que je veux supprimer le premier caractère (qui est @) dans la chaîne "@ ABCDEFG1234"

Je veux que sed vérifie si "@" existe comme premier caractère. Si c'est le cas, il devrait supprimer le caractère.

Réponses:


10

sed 's/^@\(.*\)/\1/'

^ signifie le début de la chaîne

@ votre personnage connu

(.*) le reste, capturé

alors le bloc capturé sera substitué à la sortie Désolé, ne peut pas le tester pour le moment, mais devrait être quelque chose comme ça


18

Il n'est pas nécessaire de capturer et de remplacer.

sed 's/^@//'

Cela remplace le caractère @lorsqu'il est premier ^dans la chaîne, sans rien. Ainsi, en le supprimant.


0

Vous pouvez le faire à la place.

sed 's /^.//'

^ - Starting character 
. - No of charactes(.. means two characters)

Exemple :

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123

1
La question dit "Je veux que sed vérifie si" @ "existe comme premier caractère. Si c'est le cas, il devrait supprimer le caractère. " Votre réponse supprime le premier caractère de chaque ligne, quel qu'il soit. Par exemple, si une ligne contient test123, il semble que l'OP souhaite qu'elle reste seule.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.