Jika Anda hanya perlu memeriksa apakah kecocokan ditemukan atau tidak, potong semua jalur input dengan panjang awalan yang diinginkan ( $1
) dan kemudian gunakan grep pola-tetap:
if cut -c 1-"${#1}" | grep -qF "$1"; then
echo "found"
else
echo "not found"
fi
Juga mudah untuk mendapatkan hitungan garis yang cocok:
cut -c 1-"${#1}" | grep -cF "$1"
Atau nomor baris semua baris yang cocok (nomor baris dimulai dari 1):
cut -c 1-"${#1}" | grep -nF "$1" | cut -d : -f 1
Anda dapat memberi makan nomor baris ke head
dan tail
untuk mendapatkan teks lengkap dari baris yang cocok, tetapi pada saat itu lebih mudah untuk hanya menjangkau bahasa skrip modern seperti Python atau Ruby.
(Contoh di atas mengasumsikan Posix grep dan cut. Mereka menganggap file yang akan dicari berasal dari input standar, tetapi dapat dengan mudah diadaptasi untuk mengambil nama file sebagai gantinya.)
Sunting: Anda juga harus memastikan bahwa pola ( $1
) bukan string dengan panjang nol. Kalau tidak, cut
gagal mengatakan values may not include zero
. Juga, jika menggunakan Bash, gunakan set -o pipefail
untuk menangkap keluar kesalahan oleh cut
.
grep '^$1'
? Atau bukankah maksud Anda bahwa Anda ingin mencegah$1
perluasan oleh shell?