Grep kullanarak bir satırdaki son öğeyi bulma


13

Belirli bir model için grep kullanarak son kelimeyi veya ifadeyi almaya çalışıyorum. Bu örnekte, son virgülden satırın sonuna kadar olacaktır:

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

Ve bu satır için istenen çıktı "Büyük Değer" olacaktır. Tüm çizgiler de farklı uzunluklardadır, ancak her zaman son kelimelerden önce tek bir virgül vardır.

Temel olarak, son virgülden satırın sonuna kadar çıktı almak istiyorum. Teşekkür ederim!


9
Kullanmayı düşündünüz mü awk -F, '{print $NF}'?
steeldriver

Satırdaki son öğeyi almak kolay bir iştir, ancak bu satır nasıl tanımlanmalıdır? yani, bir komut veya komut satırı satırına bakmak ve "evet, bu bir" diyebilirim? bu çizgiyi tanımlayan model nedir?
Sergiy Kolodyazhnyy

5
grepbu işin aracı değil.
Kusalananda

Yanıtlar:


27

Buraya:

grep -o '[^,]\+$'
  • [^,]\+,satırın sonunda olmayan bir veya daha fazla karakterle eşleşir ( $)

  • -o yalnızca eşleşen kısmı yazdırır

Misal:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

Bir cazibe gibi çalıştı! "" Nin bir kombinasyonunu kullanmaya çalışıyordum. ve diğer ifadeler daha önce ama bu çok daha iyi, çok takdir çalışıyor.
reversebottle

hmm, ben kullanılmış -Eove sonra kaçmak için gerekli değil+
Baldrickk

@Baldrickk ERE'yi -Eetkinleştirir, bu yüzden.
heemayl

@heemayl evet, nedenini biliyorum. Daha yaygın bir regex sözdizimi olduğu için kullanmaya eğilimliyim
Baldrickk

15

Her zaman bir awkçözüm görmek ister, böylece işte burada (doğru çözümü onayladı!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

3
Bu doğru cevap olmalı. Grep'i kullanırken, çekiçli bir vida da sürebilirsiniz.
wilsotc
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.