GNU/Linux >> Belajar Linux >  >> Linux

Bingung Tentang Batas Kata?

Saya telah meneliti ini banyak, tapi saya masih belum jelas tentang hal itu. Apa yang dimaksud dengan batas kata berarti? Apa fungsinya?

Jadi, misalnya, bisakah seseorang menjelaskan perintah ini kepada saya?

egrep 'b[A-Z]+b' filename.sh

Jawaban yang Diterima:

Seperti yang dijelaskan di sini, misalnya, ini cocok dengan antara kata-kata:

Ada tiga posisi berbeda yang memenuhi syarat sebagai batas kata:

  1. Sebelum karakter pertama dalam string, jika karakter pertama adalah karakter kata.
  2. Setelah karakter terakhir dalam string, jika karakter terakhir adalah karakter kata.
  3. Antara dua karakter dalam string, yang satu adalah karakter kata dan yang lainnya bukan karakter kata.

Berikut adalah contoh dari masing-masing kasus tersebut:

  1. Untuk string foobar , kasus pertama cocok

     foobar
    ^-----here
    
  2. Untuk string foobar , kasus kedua cocok

    foobar
          ^--here
    
  3. Untuk string foo bar , kasus ketiga akan cocok

    foo bar
       ^--here, because space is not a word character
    

Apa yang memenuhi syarat sebagai karakter kata tergantung pada implementasi ekspresi reguler tertentu. Namun, dalam semua kasus, huruf ([a-z] dan [A-Z] ), angka ([0-9] ) dan _ dianggap sebagai karakter kata.

Jadi, contoh ekspresi reguler yang Anda posting (b[A-Z]+b ) berarti menemukan string terpanjang yang berada di antara dua batas kata dan hanya terdiri dari huruf besar. Mungkin lebih mudah untuk menjelaskan dengan contoh:

echo "FOOBAR" | egrep 'b[A-Z]+b'   # Works
echo "FOO BAR" | egrep 'b[A-Z]+b'  # Works
echo "aFOOBARb" | egrep 'b[A-Z]+b' # Does not work, we want capitals only
echo "12345" | egrep 'b[A-Za]+b'   # Does not work, no letters
echo "1FOOBAR2" | egrep 'b[A-Z]+b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep 'b[A-Z]+b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep 'b[A-Z]+b' # Works, # and $ are not word chars

Linux
  1. Cara menggunakan perintah WC untuk mencetak karakter, byte, baris baru, dan jumlah kata di Linux

  2. Menggunakan Bungkus Kata Dengan Mc?

  3. Bingung Tentang Grep Dan * Wildcard?

  1. Tentang MySQL

  2. Tentang PHP

  3. Tentang gambar Cloud Server

  1. Tentang wilayah

  2. Nonblocking Dapatkan Karakter

  3. Melarikan diri dari karakter bintang (*) di bash