1

Следующий синтаксис sed удаляет первый символ @ если он существует в строке:

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

Но как изменить его, чтобы удалить символ @ только если он находится на третьей позиции? Например, мне нужно удалить его в следующей строке:

 AB@CDEF

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

3 ответа3

2

Ты можешь использовать

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

Чтобы обобщить любой символ в любой заданной позиции n:

sed 's/^\(.\{2\}\)./\1/'

который удаляет третий символ. Просто измените число "2" на n-1.

Вы можете использовать переменную как это:

n=2
echo "$line" | sed "s/^\(.\{${n}\}\)./\1/"
0
% sed -e '/^..@/ { s,^\(..\)@,\1, }'

средства:

  • если строка начинается с 3 символов, третье - это «@»
  • выбросить @, но сохранить первые символы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .