Saya mencoba mencari baris yang dimulai dengan "1" menggunakan
ls -1 | grep ^1*
tetapi mengembalikan garis yang tidak dimulai dengan 1. Apa yang saya lewatkan di sini?
Saya mencoba mencari baris yang dimulai dengan "1" menggunakan
ls -1 | grep ^1*
tetapi mengembalikan garis yang tidak dimulai dengan 1. Apa yang saya lewatkan di sini?
Jawaban:
Meskipun ini tidak menjawab pertanyaan Anda, ini adalah solusi yang lebih baik untuk apa yang tampaknya menjadi tujuan Anda:
ls -ld 1*
Anda dapat menggunakan shell glob untuk mendaftar semua file yang dimulai dengan 1
. Catatan yang *
memiliki arti berbeda dalam shell globbing dari ekspresi reguler.
*
adalah wildcard yang berarti "0 atau lebih dari karakter apa pun ". Makna regex dijelaskan dalam jawaban otokan.
^ 1. * cocok dengan seluruh baris, atau seperti yang disebutkan di atas, ^ 1 mendapat string yang terkandung di dalam baris.
gaya regex yang berbeda menggunakan simbol berbeda yang mewakili karakter, beberapa opsi menentukan gaya mana yang Anda inginkan. dan berbagai opsi menentukan apakah Anda ingin mencocokkan seluruh baris, atau hanya sebagian saja, atau seluruh input sebagai satu string.
ls
output, Anda akan mengalami masalah jika nama file mengandung beberapa karakter aneh, seperti baris baru ... Banyak perintah lain (entah bagaimana tidakls
, setidaknya bukan versi yang harus saya periksa) memiliki opsi untuk memberikan output yang dipisahkan nol, yang kemudian dapat Anda proses dengan amangrep -z