Löschen Sie das erste bekannte Zeichen in einer Zeichenfolge mit sed

11

Wie löscht man das erste bekannte Zeichen in einer Zeichenkette mit sed?

Angenommen, ich möchte das erste Zeichen (@) in der Zeichenfolge "@ ABCDEFG1234" löschen.

Ich möchte, dass sed überprüft, ob "@" als erstes Zeichen vorhanden ist. In diesem Fall sollte das Zeichen gelöscht werden.

Yael
quelle

Antworten:

8

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

^ bedeutet den Beginn der Zeichenfolge

@ dein bekannter char

(.*) der Rest gefangen genommen

dann wird der erfasste Block durch die Ausgabe ersetzt. Entschuldigung, ich kann ihn momentan nicht testen, sollte aber so ähnlich sein

Pablo
quelle
17

Es ist nicht erforderlich, zu erfassen und zu ersetzen.

sed 's/^@//'

Dies ersetzt das Zeichen, @wenn es das erste Mal ^in der Zeichenfolge ist, durch nichts. So löschen Sie es.

Johnny
quelle
0

Sie können dies stattdessen tun.

sed 's /^.//'

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

Beispiel:

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123
Prakaash Ravi Chandran
quelle
1
Die Frage lautet: "Ich möchte, dass sed überprüft, ob" @ "als erstes Zeichen vorhanden ist. Wenn ja, sollte das Zeichen gelöscht werden. “ Ihre Antwort löscht das erste Zeichen jeder Zeile, egal was es ist. Wenn eine Zeile beispielsweise enthält test123, sieht es so aus, als ob das OP möchte, dass sie in Ruhe gelassen wird.
Scott