Usuń pierwszy znany znak z ciągu za pomocą sed

12

Jak usunąć pierwszy znany znak w ciągu z sed?

Powiedzmy na przykład, że chcę usunąć pierwszy znak (którym jest @) w ciągu „@ ABCDEFG1234”

Chcę, aby sed sprawdził, czy „@” istnieje jako pierwszy znak. Jeśli tak, powinien usunąć znak.

Yael
źródło

Odpowiedzi:

10

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

^ oznacza początek ciągu

@ twój znany char

(.*) reszta schwytana

wtedy przechwycony blok zostanie zastąpiony wyjściem Niestety nie można go w tej chwili przetestować, ale powinno być coś takiego

Pablo
źródło
18

Nie ma potrzeby przechwytywania i zastępowania.

sed 's/^@//'

Zastępuje to znak, @gdy jest pierwszy ^w ciągu, bez niczego. Tak więc, usuwając to.

Jasio
źródło
0

Możesz to zrobić zamiast tego.

sed 's /^.//'

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

Przykład:

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123
Prakaash Ravi Chandran
źródło
1
Pytanie brzmi: „Chcę, aby sed sprawdził, czy„ @ ”istnieje jako pierwszy znak. Jeśli tak, powinien usunąć znak. ” Twoja odpowiedź usuwa pierwszy znak każdego wiersza, bez względu na to, co to jest. Na przykład, jeśli wiersz zawiera test123, wygląda na to, że OP chce pozostawić go w spokoju.
Scott,