Saya mencoba mencari solusi untuk pertanyaan ini . Saya ingin menggunakan awk
untuk 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 awk
perintah 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 venkat
dan venkat3
di output?
Jika saya menggunakan printf
alih-alih print
dalam awk
, saya mendapatkan venkatvenkat3
sebagai 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 $1
kolom?
Saya ingin mencapai sesuatu seperti,
awk -F "_" '$2==1{print $1}' file
EDIT
Saya tidak memperhatikan awk
solusi Stephane. Apakah ia melakukan hal yang sama dengan yang saya sebutkan?
awk
tidak 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 sepertidoglion
dan tidak hanyadog_lion
.