Sed ile bir dizede bilinen ilk karakteri sil


12

Sed ile bir dizede bilinen ilk karakteri nasıl silebilirim?

Örneğin, "@ ABCDEFG1234" dizesindeki ilk karakteri (@ olan) silmek istediğimi varsayalım

Sed'in ilk karakter olarak "@" olup olmadığını doğrulamasını istiyorum. Eğer öyleyse, karakteri silmeli.

Yanıtlar:


10

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

^ dizenin başlangıcı anlamına gelir

@ bilinen karakterin

(.*) geri kalanı ele geçirildi

sonra yakalanan blok çıktı almak için üzgünüm Üzgünüm, şu anda test edemez, ama böyle bir şey olmalı


18

Yakalamaya ve değiştirmeye gerek yok.

sed 's/^@//'

Bu, karakter dizede @ilk olduğunda ^hiçbir şey olmadan değiştirilir. Böylece, siliniyor.


0

Bunun yerine bunu yapabilirsiniz.

sed 's /^.//'

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

Misal :

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123

1
Soru “sed'in ilk karakter olarak" @ "olup olmadığını doğrulamasını istiyorum. Öyleyse, karakteri silmeli. ” Cevabınız ne olursa olsun cevabınız her satırın ilk karakterini siler. Örneğin, bir satır içeriyorsa test123, OP'nin yalnız kalmasını istiyor gibi görünüyor.
Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.