Saya relatif baru mengenal BASH dan saya mencoba menggunakan awk untuk menyaring data kolom 1 berdasarkan kolom ke-4 dari file teks. Jika kolom ke-4 data cocok dengan rentang x, maka data kolom 1 akan dikeluarkan. "x &" adalah rentang angka 1-10 (1,2,3..10).
awk -F: '{ if($4=="x") print $1}' filename.txt
filename.txt
sample1 0 0 4
sample2 0 0 10
sample3 0 0 15
sample4 0 0 20
Penggunaan yang sebenarnya:
awk -F: '{ if($4=="1-10") print $1}' sample.txt
output = sample1, sample2, sample3, sample4
Seharusnya: sampel1 sampel2
saja.
Apakah ada kesalahan dalam sintaks yang tidak saya lihat atau saya mungkin menggunakan sintaks ini sepenuhnya salah?
Mungkin ada cara untuk melakukannya hanya dengan menggunakan awk (nevermind, lihat suntingan saya di bawah ini), tetapi saya tidak mengetahuinya. Saya akan menggabungkannya dengan grep:
egrep ' ([1-9]|10)$' sample.txt | awk '{print $1}'
Saya pikir Anda mencocokkan kolom keempat dengan string "1-10" bukan rentangnya. Juga, -F:
akan mengubah pembatas menjadi titik dua daripada spasi.
Edit:
awk '$4 ~ /^([1-9]|10)$/ {print $1}' sample.txt