Видаліть перший відомий символ у рядку з 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.