рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реВрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЙрд▓рд┐рд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рдореБрдЦреНрдп, рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╕рд╣рдиреАрдп рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЗрд╡рд▓ рдХрднреА-рдХрднреА, рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЪрд╛рдЯрдирд╛, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╣рдерд┐рдпрд╛рдирд╛ рдЬреЛ рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реБрдЧрдВрдзрд┐рдд рд╕рд╛рдордВрдЬрд╕реНрдп рд▓рд╛рддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рд╕реБрд╕реНрдд рднреВрдорд┐рдХрд╛ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рд╕реАрдб рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рдВрдкрд╛рджрдХ, рдЬреЛ рдЕрднреА рднреА рдореЗрд░реЗ рдмреНрд░реАрдлрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рдереЗред
рдРрд╕реЗ рдХрдИ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рд▓реЛрдЧ рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рдЧрд▓рд╛ рдХрд╛рдЯрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░рд┐рдп рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рдореНрдорд╛рди рдХреА рд░рдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рджреБрд░реНрдЬреЗрдп рдпреБрджреНрдз рд╕реЗрдб рдмрдирд╛рдо рдЕрд╡реЗрдХ рдмрдирд╛рдо рдЧреНрд░реАрдк рдмрдирд╛рдо ...
рдлрд┐рд░ рднреА, рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рддреЗрдЬ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдЦрдХ рдХреЛ рдореБрд╕реНрдХреБрд░рд╛рддрд╛ рд╣реИ, рдХреЙрдлреА рдХреЗ рдПрдХ рдХрдк рдХреЗ рд▓рд┐рдП рдХрдо рд╕рдордп рдмрд┐рддрд╛рдиреЗ "рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ"ред рдпрд╣, рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдХреБрдЫ рдЕрдкрд░реНрдпрд╛рдкреНрддрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡рд╣ рд╕реА рднрд╛рд╖рд╛ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рд╕реАрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЗрд╕реЗ рдкрд╛рдЧрд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрдордХрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрд╕рдВрднрд╡ рдЖрд╡реЗрд╖рдг рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреИрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╣рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдЕрдВрджрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджрд┐рдпрд╛ [[рдкреНрд░рдпреЛрдЧ = ~ред
рдЗрд╕ рддрд░рд╣ рдХреА рдмреИрд╢ рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ Google рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╣реА рдлреИрд╕рд▓реЗ рдХреЗ рд╕рд╛рде рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ - "рдмреИрд╢ рдХреЗ рдЕрдВрджрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдореВрд╡рдЯрдиред"
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдлреИрд╕рд▓реЗ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реИ (рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдмреБрд░рд╛ рд╣реИ)ред
рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдбрд╛рдЯрд╛
рдХреБрдЫ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдВрдб, рдореЙрдбрд▓ рдФрд░ рд╕реАрдПрд╕рд╡реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдкрд╛рда рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИ, рд▓рдЧрднрдЧ 1 рдПрдордмреА, рдЕрд░реНрдерд╛рддреНред рдХрд▓реНрдкрдирд╛ рдФрд░ рдЕрдкрдиреЗ рдЪрдпрди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧреБрдВрдЬрд╛рдЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╢реЙрд░реНрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рдорд╛рд▓реА рдлреНрд░реИрдВрдХ рд╣реВрдВ, рдЬрд┐рд╕рдиреЗ рдмреБрдЧрд╛рдЯреА рдЦрд░реАрджрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдкрд╕рдВрдж рдЙрд╕рдХреЗ рдКрдкрд░ рдЧрд┐рд░ рдЧрдИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдмреНрд░рд╛рдВрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рдЖрдзрд╛рд░ рдореЗрдВ рдЗрд╕ рдмреНрд░рд╛рдВрдб рдХреА рдХреЗрд╡рд▓ 4 рдХрд╛рд░реЗрдВ рд╣реИрдВ; рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреМрди рд╕рд╛ рдорд╛рд▓реА рднреАрдбрд╝ рд╕реЗ рдирд╣реАрдВ рдЕрдкрдиреЗ рдмреАрдЬрд╛рд░реЛрдкрдг рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ; рдмрд╕, рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдмреНрд░рд╛рдВрдб, рдЖрдХрд░реНрд╖рдХ рд╕реНрдерд╛рдиреАрдп рд╕реБрдВрджрд░рд┐рдпреЛрдВ рд╕реЗ)ред
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдорд╢реАрдиреЛрдВ рдХреЛ рдмреНрд░рд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдмрд╛рдж рдореЗрдВ рдореЙрдбрд▓ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЫрдВрдЯрд╛рдИ рдХреА рдЧрдИ рдереАред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдбреАрдмреА рдЯреБрдХрдбрд╝рд╛:
"";" ";" (/)";" ( 100/)";" (^3)";" (../. )";" ( 100 )";" ";" ()";" ()";" ()";" ";" ";" ";" ()"
...
"Brilliance M3 1.8";"-";"210";"10.1";"1793";"170/5500";"7.7";"";"4488";"1812";"1385";"2008";"3";"4";"400"
"Bugatti Veyron EB 16.4";"43 968 000";"407";"3";"7993";"1001/6000";"24.1";"";"4465";"2000";"1205";"2006";"2";"2";"-"
"Bugatti EB 110 GT";"-";"340";"3.6";"3500";"559/8000";"14.3";"";"4400";"1960";"1125";"1991";"2";"2";"72"
"Bugatti EB 110 S";"-";"350";"3.4";"3500";"620/8000";"13.5";"";"4400";"1960";"1125";"1991";"2";"2";"72"
"Bugatti EB 112 6.0";"-";"300";"4.7";"5995";"461/6300";"18.2";"";"5070";"1960";"1405";"1993";"4";"4";"365"
"Buick Enclave CX";"-";"180";"-";"3564";"279/6600";"-";"";"5126";"2006";"1846";"2007";"5";"8";"535-3259"
...
рдкреНрд░рдпреЛрдЧ рдХрд╛ рдХрд╛рд░реНрдп рдмреБрдЧрд╛рдЯреА рдмреНрд░рд╛рдВрдб рдХреЗ рд╕рд╛рде рдмрд╢ рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдореЗрдВ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдЧрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рд╣реИред рдЖрд▓рд╕реА рд▓реЛрдЧ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде regexp рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
grep Bugatti auto.csv
рд▓реЗрдХрд┐рди, рд╕реНрдерд┐рддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреБрдЧрд╛рдЯреА рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдорд╛рд▓реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ?
рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐
рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реАрдб рд╕реНрдЯреНрд░реАрдо рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред (рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЪреБрдирдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ)ред
рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╖рдп рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ tmp рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд░рдгреА рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рддреЛ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ sed рд╕рдВрдкрд╛рджрдХ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
function test_sed()
{
OLD_IFS=IFS
IFS=$'\n'
tmp=($(sed -n '/.*\(Bugatti[^\n]*\)/s//\1/p' <<< "$1"))
IFS=OLD_IFS
}
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд░реЗрдЧреЗрдХреНрд╕ рдкреИрдЯрд░реНрди рдХрд▓реНрдкрдирд╛ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдРрд╕реЗ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдФрд╕рдд рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
real 0m0.805s
user 0m0.719s
sys 0m0.082s
рдмреИрд╢ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрд░ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рд╕рдордЧреНрд░ рдкрд░реАрдХреНрд╖рдг рд╕рдордп рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИред
рд╕рдорд╛рд░реЛрд╣ test_bash_rematch
рдХреБрдЫ рд╕рдордп рдмрд╛рд╢ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг regexp рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрди рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреИрд╢ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЦреЛрдЬ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
[[ $str =~ "$regex" ]]
рдХрдорд╛рдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо 0 рд╣реИ рдпрджрд┐ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 1 рдирд╣реАрдВ рдорд┐рд▓рдиреЗ рдкрд░ рдФрд░ рдпрджрд┐ рдкреИрдЯрд░реНрди рдЧрд▓рдд рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ 2ред рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдкрд╛рдпрд╛ рдЧрдпрд╛ рдорд┐рд▓рд╛рди S {BASH_REMATCH} рд╕рд░рдгреА (рдЗрдВрдбреЗрдХреНрд╕ 0 рдХреЗ рд╕рд╛рде) - рдЙрд╕ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реЗ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдореВрд╣ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдмрд╛рдзрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдореИрди рдмреИрд╢ рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдиреБрдХрд╕рд╛рди - POSIX рджреНрд╡рд╛рд░рд╛ regex рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд▓рд╛рд▓рдЪреА рдФрд░ рдЖрд▓рд╕реА рдорд╛рддреНрд░рд╛ рдХрд╛ рдард╣рд░рд╛рд╡ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рднрдБрд╡рд░, рдЬреЛ рдХрд╛рдлреА рдкреНрд░рдЧрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ - рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЦреЛрдЬ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╛ рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рдореИрдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рд╕реНрдЯреНрд░реАрдо рд╕рдВрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рдХреЛ рдкрд╣рд▓реЗ рдореИрдЪ рддрдХ рдЦреЛрдЬрддрд╛ рд╣реИ)ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛:
function test_bash_rematch_single()
{
[[ "$1" =~ (Bugatti[[:alpha:][:digit:][:punct:][:blank:]]*) ]] && tmp[0]="${BASH_REMATCH[1]}"
}
рдПрдХ рдкреИрдЯрд░реНрди рдореИрдЪ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ, рдФрд╕рдд рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо:
real 0m0.678s
user 0m0.624s
sys 0m0.030s
рд╕реЗрдб рд╕реЗ рдмреЗрд╣рддрд░, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдореИрдЪ рд╣реИред
рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди:
function test_bash_rematch_while()
{
i=0
while read line
do
[[ "$line" =~ (Bugatti.*) ]] && tmp[i]="${BASH_REMATCH[1]}" && ((i++))
done <<< $1
}
рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде:
real 0m1.523s
user 0m1.360s
sys 0m0.030s
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмреИрд╢ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди, рдЗрд╕ рд╕рдордп, рдмреИрд╢ рд╕рдВрд╕реНрдХрд░рдг 4.1.5 (1) рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ, рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмрд┐рд▓реНрдЯ-рдЗрди рдмреИрд╢ рд░реЗрдХреНрд╕рдПрдХреНрд╕рдкреА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рд░рдирдЯрд╛рдЗрдо рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рднреА рдмрд┐рд▓реНрдЯ-рдЗрди рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЪреВрдВрдХрд┐ рдпрд╣ рдЧреЛрд▓реЗ рдХреЗ рдмреАрдЪ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд▓рд╕рд╕ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрдм рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ (рдпрджрд┐ рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ), рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рддреЗрдЬреА рд╕реЗ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдмрдврд╝реЗрдЧрд╛ рдФрд░ рд╣рдо рд╣реИрдордмрд░реНрдЧрд░ рдХреЛ рдПрдиреАрдорд╛ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред