Menemukan item terakhir dalam satu baris menggunakan grep


12

Saya mencoba mengambil kata atau frasa terakhir menggunakan grep untuk pola tertentu. Dalam contoh ini, itu akan menjadi dari koma terakhir ke akhir baris:

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

Jadi output yang diinginkan untuk baris itu adalah "Nilai Besar". Semua garis memiliki panjang yang berbeda juga, tetapi selalu memiliki koma tunggal sebelum kata-kata terakhir.

Pada dasarnya, saya hanya ingin output dari koma terakhir ke akhir baris. Terima kasih!


9
Sudahkah Anda mempertimbangkan untuk menggunakan awk -F, '{print $NF}'?
steeldriver

Mendapatkan item terakhir pada baris adalah tugas yang mudah, tetapi bagaimana seharusnya baris itu diidentifikasi? maksud saya, bagaimana bisa perintah atau skrip melihat baris, dan mengatakan "ya, itu dia"? apa pola yang mengidentifikasi garis itu?
Sergiy Kolodyazhnyy

5
grepbukan alat untuk pekerjaan ini.
Kusalananda

Jawaban:


27

Sini:

grep -o '[^,]\+$'
  • [^,]\+cocok dengan satu atau lebih karakter yang tidak ada ,di akhir baris ( $)

  • -o hanya mencetak bagian yang cocok

Contoh:

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

Bekerja seperti pesona! Saya mencoba menggunakan kombinasi "." dan ungkapan lain sebelumnya, tetapi ini bekerja jauh lebih baik, sangat dihargai.
pembalikan botol

hmm, saya telah menggunakan -Eodan kemudian tidak perlu melarikan diri dari+
Baldrickk

@Baldrickk -Emengaktifkan ERE, itu sebabnya.
heemayl

@ heemayl ya, saya tahu kenapa. Saya cenderung menggunakannya karena ini adalah sintaks regex yang lebih umum
Baldrickk

14

Selalu suka melihat awksolusi jadi di sini (upvoted solusi yang tepat!):

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

3
Ini seharusnya jawaban yang benar. Meskipun Anda dapat menggunakan grep, Anda juga dapat menggerakkan sekrup dengan palu.
wilsotc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.