Lebih
Menggunakan AWK untuk menyaring kolom dengan rentang numerik
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?
31
3
keluaran:
penjelasan:
^[1-9]$
--> $4 harus berupa satu digit dari 1 sampai 9|
(pipa) --> atau^10$
--> $4 harus berupa angka 10Mungkin ada cara untuk melakukannya hanya dengan menggunakan awk (nevermind, lihat suntingan saya di bawah ini), tetapi saya tidak mengetahuinya. Saya akan menggabungkannya dengan grep:
Saya pikir Anda mencocokkan kolom keempat dengan string "1-10" bukan rentangnya. Juga,
-F:
akan mengubah pembatas menjadi titik dua daripada spasi.Edit: