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.

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


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.


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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.