Bagaimana Anda memahami string alfanumerik yang terdiri dari 1 hingga 50 karakter (idealnya, berapa pun panjangnya akan berfungsi juga) dengan titik dua di setiap sisi - hasil khasnya adalah semua baris yang berisi string :shopping:
. Sejauh ini saya punya kode di bawah ini (saya sudah mencoba beberapa variasi di atasnya) yang tidak berfungsi:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
dengan menyertakan-E
sakelar.Jawaban:
Anda perlu mengaktifkan ekspresi reguler yang diperluas untuk ini:
sumber
Dengan ekspresi reguler dasar, Anda dapat menulis seperti:
Perhatikan bahwa
\{
(sebagai lawan\+
atau\?
misalnya) adalah standar dan portabel, dan sebenarnya setara dengan BRE+
dan?
biasanya ditulis dengan\{
:\{1,\}
dan\{0,1\}
.grep -E
juga standar dan portabel, jadi Anda sebaiknya menggunakannya karena membuat regexps lebih mudah dibaca dalam kasus tersebut.sumber
Anda menggunakan expresi reguler yang diperluas sehingga Anda perlu menggunakan opsi -E:
sumber
Karena tidak ada orang lain yang menyebutkannya, Anda juga dapat menggunakan
egrep
, yang, seperti yang saya pahami, setara dengangrep -E
.sumber
egrep
adalah perintah historis untuk dipahami dengan ERE. Fungsionalitas grep dan egrep sejak (dahulu) telah digabungkan menjadi grep dengan opsi -E.egrep
sekarang dianggap usang / usang (tetapi tidak mungkin untuk pergi karena beberapa orang masih terbiasa).