Saya mencoba mencari solusi untuk pertanyaan ini . Saya ingin menggunakan awkuntuk solusinya.
File input saya adalah seperti di bawah ini.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Saya menggunakan awkperintah untuk mengekstrak nilai kedua setelah _seperti di bawah ini.
awk -F "_" '{print $2}' file
Namun, meskipun perintah di atas mencetak nilai yang benar, saya mendapatkan garis kosong di output saya. Saya punya 2 pertanyaan.
pertanyaan 1
Bagaimana saya bisa menghapus garis kosong di output sehingga saya hanya mendapatkan venkatdan venkat3di output?
Jika saya menggunakan printfalih-alih printdalam awk, saya mendapatkan venkatvenkat3sebagai output yang tidak ingin saya capai. Saya ingin output seperti,
venkat
venkat3
Pertanyaan 2
Menggunakan nilai-nilai itu sebagai array asosiatif atau sesuatu, bagaimana saya bisa menemukan jika nilai-nilai itu benar-benar muncul di $1kolom?
Saya ingin mencapai sesuatu seperti,
awk -F "_" '$2==1{print $1}' file
EDIT
Saya tidak memperhatikan awksolusi Stephane. Apakah ia melakukan hal yang sama dengan yang saya sebutkan?
awktidak melakukan hal yang sama. Pendekatan Anda mengasumsikan bahwa sebuah kata hanya dapat dimuat dalam kata lain jika dipisahkan oleh_. Meskipun itu benar untuk contoh OP, semua jawaban yang diposting juga menangani kasus sepertidogliondan tidak hanyadog_lion.