How does one delete the first known character in a string with sed?

For example, say I want to delete the first character (which is @) in the string "@ABCDEFG1234"

I want sed to verify whether "@" exists as the first character. If so, it should delete the character.


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

^ means beginning of the string

@ your known char

(.*) the rest, captured

then captured block will be substituted to output Sorry, can't test it at the moment, but should be something like that

| improve this answer | |

There's no need to capture and replace.

sed 's/^@//'

This replaces the character @ when it's first ^ in the string, with nothing. Thus, deleting it.

| improve this answer | |

You can do this instead.

sed 's/^.//'

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

Example :

echo test123 | sed 's/^.//'
echo test123 | sed 's/^..//'
| improve this answer | |
  • 1
    The question says “I want sed to verify whether "@" exists as the first character. If so, it should delete the character.” Your answer deletes the first character of each line no matter what is it. For example, if a line contains test123, it looks like the OP wants it left alone. – Scott Mar 12 '18 at 3:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.