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.

Yael
la source

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

Pablo
la source
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.

johnny
la source
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
Prakaash Ravi Chandran
la source
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