Удалите первый известный символ в строке с помощью sed


12

Как удалить первый известный символ в строке с помощью sed?

Например, я хочу удалить первый символ (который является @) в строке "@ ABCDEFG1234"

Я хочу, чтобы sed проверил, существует ли «@» в качестве первого символа. Если это так, он должен удалить символ.

Ответы:


10

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

^ означает начало строки

@ ваш известный персонаж

(.*) остальные захвачены

Захваченный блок будет заменен на вывод. Извините, в данный момент не могу проверить это, но должно быть что-то вроде этого


18

Там нет необходимости захватывать и заменять.

sed 's/^@//'

Это заменяет символ, @когда он первый ^в строке, ничем. Таким образом, удаляя его.


0

Вы можете сделать это вместо этого.

sed 's /^.//'

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

Пример :

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

1
Вопрос говорит: «Я хочу, чтобы sed проверял, существует ли« @ »в качестве первого символа. Если это так, он должен удалить символ ». Ваш ответ удаляет первый символ каждой строки независимо от того, что это. Например, если строка содержит test123, похоже, что ОП хочет, чтобы ее оставили в покое.
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.