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

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

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

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

 AB@CDEF

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

1
задан 24.12.2013, 02:54

3 ответа

Можно использовать

sed 's/^\(..\)@\(.*\)/\1\2/'
2
ответ дан 12.12.2019, 10:42

Сделать вывод для любого символа в любом данном положении n:

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

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

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

n=2
echo "$line" | sed "s/^\(.\{${n}\}\)./\1/"
1
ответ дан 12.12.2019, 10:42
% sed -e '/^..@/ { s,^\(..\)@,\1, }'

средства:

  • если строка запускается с 3 символов, третье
  • выведите, но сохраните первые символы
0
ответ дан 12.12.2019, 10:42

Теги

Похожие вопросы