ΠΠ΄Π½Π°ΠΊΠΎ (ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅) ΡΠΈΠΌΠ²ΠΎΠ»Ρ ( ) { } ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡΡΡ Π² BRE ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΡΠ°, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² ERE ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌΠΈ ΠΆΠ΅ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ Π² Π»ΠΈΡΠ΅ΡΠ°Π»Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ°ΡΡΡΡ ERE, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΡΠΈΡ grep. Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π΄ΠΈΠ°Π»Π΅ΠΊΡ ERE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ egrep, Π½ΠΎ GNU-Π²Π΅ΡΡΠΈΡ grep ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π΅Π΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -E.
posix
ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ 1980-Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Unix ΠΎΠ±ΡΠ΅Π»Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π½ΠΎ Π΄ΠΎ 1988-Π³ΠΎ Π² ΠΌΠΈΡΠ΅ Unix ΡΠ°ΡΠΈΠ»Π° ΠΏΠΎΠ»Π½Π°Ρ Π°Π½Π°ΡΡ ΠΈΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Unix Ρ Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ β ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ AT&T ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠΈ ΠΊ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» ΡΠ²ΠΎΠΈ, ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡ ΡΠ΄ΡΠΈΠ»Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΏΡΡΠ°Π»ΠΈΡΡ ΠΈΠ³ΡΠ°ΡΡ Π² ΠΈΠ³ΡΡ, ΠΏΠΎΠ±Π΅Π΄ΠΎΠΉ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΎ Β«Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅Β» ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅. ΠΡΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΈΡΡΠΎΡΠΈΠΈ Unix Π½ΡΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΠ°Π»ΠΊΠ°Π½ΠΈΠ·Π°ΡΠΈΡ (Balkanization).
Π ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ 1980-Ρ ΠΈΠ½ΡΡΠΈΡΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΈ (Institute of Electrical and Electronics Engineers, IEEE) Π½Π°ΡΠ°Π» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Unix (ΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ). ΠΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΡ, ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ IEEE 1003, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (Application Programming Interface, API), ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ POSIX, ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΡ Β«Portable Operating System InterfaceΒ» (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π³Π΄Π΅ Π±ΡΠΊΠ²Π° X Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π·Π²ΡΡΠ°Π½ΠΈΡ), Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π ΠΈΡΠ°ΡΠ΄ΠΎΠΌ Π‘ΡΠΎΠ»Π»ΠΌΠ°Π½ΠΎΠΌ (Π΄Π°, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π ΠΈΡΠ°ΡΠ΄ΠΎΠΌ Π‘ΡΠΎΠ»Π»ΠΌΠ°Π½ΠΎΠΌ) β ΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ IEEE.
Π§Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ (alternation, ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΎΡΠ°) β ΠΎΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ grep ΠΈ echo. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ:
[[email protected] ~]$ echo "AAA" | grep AAA
AAA
[[email protected] ~]$ echo "BBB" | grep AAA
[[email protected] ~]$
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ echo Π½Π° Π²Π²ΠΎΠ΄ grep ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠ²ΠΎΠ΄; Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΠΌΠΎΠ΅ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ:
[[email protected] ~]$ echo "AAA" | grep -E 'AAA|BBB'
AAA
[[email protected] ~]$ echo "BBB" | grep -E 'AAA|BBB'
BBB
[[email protected] ~]$ echo "CCC" | grep -E 'AAA|BBB'
[[email protected] ~]$
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 'AAA|BBB', ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ AAA ΠΈΠ»ΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ BBBΒ». Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ, ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ grep ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ -E (Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ egrep) ΠΈ Π·Π°ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°. Π ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
[[email protected] ~]$ echo "AAA" | grep -E 'AAA|BBB|CCC'
AAA
ΠΠ»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ():
[[email protected] ~]$ grep -Eh '^(bz|gz|zip)' dirlist*.txt
ΠΡΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ², Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ bz, gz ΠΈΠ»ΠΈ zip. ΠΡΠ»ΠΈ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠΌΡΡΠ» ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΠΈ Π΅ΠΌΡ Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ bz ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ gz ΠΈΠ»ΠΈ zip:
[[email protected] ~]$ grep -Eh '^bz|gz|zip' dirlist*.txt
ΠΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ.
? β ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·
ΠΡΠΎΡ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: Β«ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΒ». ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½Π°, ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½ΠΎΠΌΠ΅Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ ΡΠΎΡΠΌ: (nnn) nnn-nnnn ΠΈΠ»ΠΈ nnn nnn-nnnn, Π³Π΄Π΅ n β ΡΡΠΎ ΡΠΈΡΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
Π ΡΡΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π·Π° ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡ Π·Π½Π°ΠΊΠΈ Π²ΠΎΠΏΡΠΎΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅, ΡΡΠΎ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π»ΠΈΠ±ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. Π ΡΠ½ΠΎΠ²Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ (Π² ERE), ΠΌΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
[[email protected] ~]$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]$'
(555) 123-4567
[[email protected] ~]$ echo "555 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
555 123-4567
[[email protected] ~]$ echo "AAA 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
[[email protected] ~]$
ΠΠ΄Π΅ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΠ±Π΅ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½Π°, Π½ΠΎ Π΅ΠΌΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
* β ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Ρ ?, Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠ° (*) ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ; ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π·Π½Π°ΠΊΠ° Π²ΠΎΠΏΡΠΎΡΠ° (?), ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π§ΡΠΎΠ±Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π½Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΡΡΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΠΊΠ²Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΡΠΊΠ² Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΡΠΊΠΎΠΉ. ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Ρ ΡΡΠΈΠΌ (ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ) ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
[[:upper:]][[:upper:][:lower:] ]*\.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² [:upper:], Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Ρ Π΄Π²ΡΠΌΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², [:upper:] ΠΈ [:lower:], ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ, ΠΈ ΡΠΎΡΠΊΠ°, ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ ΡΠ»Π΅ΡΠ΅ΠΌ. ΠΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ *, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΡΠΊΠ² Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°:
[[email protected] ~]$ echo "This works." | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
This works.
[[email protected] ~]$ echo "This Works." | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
This Works.
[[email protected] ~]$ echo "this does not" | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
[[email protected] ~]$
ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΡΠ΅ΡΡΠ΅ β Π½Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π½Π΅ΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ°Ρ ΡΠΎΡΠΊΠ°.
+ β ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·
ΠΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ» + Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ *, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°. Π‘Π»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· Π³ΡΡΠΏΠΏ, Π½Π°ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ: