Pertanyaan di isi
Pilih baris yang dimulai dengan 1
dan diikuti oleh spasi
grep -c '^1\s' file
grep -c '^1[[:space:]]' file
Itu juga akan memberikan hitungan baris (tanpa perlu panggilan ke wc)
Pertanyaan di judul
A 1
tidak diikuti oleh nomor lain (atau tidak sama sekali):
grep -cE '^1([^0-9]|$)' file
Namun kedua solusi di atas memiliki beberapa masalah menarik, baca terus.
Di badan pertanyaan, pengguna mengklaim bahwa file tersebut "dibatasi tab".
Pembatas
tab
Baris yang dimulai dengan 1
diikuti oleh tab (tab yang sebenarnya dalam perintah). Ini gagal jika pembatasnya adalah spasi (atau lainnya, atau tidak sama sekali):
grep '^1 ' file
ruang
Baris yang dimulai dengan 1
diikuti dengan spasi (spasi aktual dalam perintah). Ini gagal jika pembatasnya adalah yang lain atau tidak sama sekali.:
grep '^1 ' file
tab atau spasi
grep '^1( | )' file
grep '^1[[:blank:]]' file
spasi putih
Opsi yang lebih fleksibel adalah menyertakan beberapa karakter spasi (horizontal dan vertikal). [:space:]
set kelas karakter terdiri dari (spasi),
\t
(tab horizontal), \r
(carriage return),\n
(baris baru), \v
(tab vertikal) dan \f
(bentuk pakan). Tapi grep tidak bisa cocok dengan baris baru (ini adalah batasan internal yang hanya bisa dihindari dengan -z
pilihan). Dimungkinkan untuk menggunakannya sebagai deskripsi pada pembatas. Dimungkinkan juga, dan lebih pendek, untuk menggunakan singkatan GNU yang tersedia dari \s
:
grep -c '^1[[:space:]]` file
grep -c '^1\s' file
Tetapi opsi ini akan gagal jika pembatasnya seperti tanda titik dua :
atau karakter tanda baca lainnya (atau huruf apa pun).
Batas
Atau, kita dapat menggunakan transisi dari digit ke batas "bukan digit", sebenarnya "karakter yang tidak ada dalam [_[:alnum:]]
(_a-zA-Z0-9
)":
grep -c '^1\b' file # portable but not POSIX.
grep -c '^1\>' file # portable but not POSIX.
grep -wc '^1' file # portable but not POSIX.
grep -c '^1\W' file # portable but not POSIX (not match only a `1`) (not underscore in BSD).
Ini akan menerima sebagai baris valid yang dimulai dengan 1 dan diikuti oleh beberapa karakter tanda baca.
Sepertinya Anda hanya menginginkan ini:
$ grep '^1\b' a
1 TGCAG.....
1 TGCAG......
Untuk bagian penghitungan ini:
$ grep -c '^1\b' file
2
Dengan awk
:
awk '$1 == "1" { print; x++ } END { print x, "total matches" }' inputfile