GNU/Linux >> Belajar Linux >  >> Linux

Cara menemukan bidang terakhir menggunakan 'potong'

Tanpa awk ?...Tapi sangat sederhana dengan awk:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK adalah alat yang jauh lebih kuat untuk dimiliki di saku Anda.-F jika untuk pemisah bidangNF adalah jumlah bidang (juga singkatan dari indeks yang terakhir)


Anda dapat mencoba sesuatu seperti ini:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

Penjelasan

  • rev membalikkan "maps.google.com" menjadi moc.elgoog.spam
  • cut menggunakan titik (yaitu '.') sebagai pembatas, dan memilih kolom pertama, yaitu moc
  • terakhir kita balikkan lagi untuk mendapatkan com

Tidak mungkin hanya menggunakan cut . Berikut adalah cara menggunakan grep :

grep -o '[^,]*$'

Ganti koma untuk pembatas lainnya.

Penjelasan:

  • -o (--only-matching ) hanya menampilkan bagian masukan yang cocok dengan pola (defaultnya adalah mencetak seluruh baris jika mengandung kecocokan).
  • [^,] adalah kelas karakter yang cocok dengan karakter apa pun selain koma.
  • * cocok dengan pola sebelumnya nol kali atau lebih, jadi [^,]* cocok dengan nol atau lebih karakter non-koma.
  • $ cocok dengan akhir string.
  • Menggabungkan ini, pola cocok dengan nol atau lebih karakter non-koma di akhir string.
  • Bila ada beberapa kemungkinan kecocokan, grep lebih suka yang dimulai paling awal. Jadi seluruh bidang terakhir akan dicocokkan.

Contoh lengkap:

Jika kita memiliki file bernama data.csv mengandung

one,two,three
foo,bar

lalu grep -o '[^,]*$' < data.csv akan menampilkan

three
bar

Gunakan ekspansi parameter. Ini jauh lebih efisien daripada perintah eksternal apa pun, cut (atau grep ) disertakan.

data=foo,bar,baz,qux
last=${data##*,}

Lihat BashFAQ #100 untuk pengantar manipulasi string asli di bash.


Linux
  1. Menyortir pada bidang terakhir dari suatu baris

  2. Bagaimana cara menentukan lebih banyak ruang untuk pembatas menggunakan cut?

  3. Cara mem-pipe hasil 'find' ke mv di Linux

  1. Bagaimana cara mengetahui proses mana yang menggunakan file di Linux?

  2. Bagaimana saya bisa menghitung jumlah folder di drive menggunakan Linux?

  3. Bagaimana cara mengetahui apa yang menghabiskan semua ruang di partisi / saya?

  1. Cara mengaudit izin dengan perintah find

  2. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Find?

  3. Bagaimana cara menemukan ukuran tumpukan maksimum?