13 рд╢реЗрд▓-рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреВрд▓

рдпрд╣рд╛рдВ рдПрдХ рднрд╡рд┐рд╖реНрдп рдХреА рдкреБрд╕реНрддрдХ рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ, рдмрд╛рд▓реНрд╢реЗрдЬрд╝рд░ рд░реВрдмреЗрд░реЛрд▓ рдФрд░ рдПрдЯрд┐рдПрди рдмреНрд░реЙрдб рджреНрд╡рд╛рд░рд╛ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдХрд░рдг рдФрд░ рдЕрднреНрдпрд╛рд╕ ред рдкреБрд╕реНрддрдХ рдХреЛ рдпреБрд╡рд╛ рдкреАрдврд╝реА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рд╛рдВрддреНрд╡рдирд╛ рдорд╛рд╣рд┐рд░, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрджреЗрд╢ рдЦреЛрд▓ рдореЗрдВ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреЛрдб рд╡рд░реНрдЬрд╝рдирд┐рдВрдЧ рдЬреИрд╕реЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ gitрдПрд╕рдХреНрдпреВрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ, рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг Make, jqрд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВред рд▓реЗрдЦрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред

рд╕рд╛рдордЧреНрд░реА



рд╢реЗрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


рдХрдорд╛рдВрдб рд╢реЗрд▓ рдХреЛ рдПрдХ рдЕрдореВрд▓реНрдп рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд░реНрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрдорд╛рдВрдб рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЬрдЯрд┐рд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирддреЗ рд╣реИрдВред рдпреЗ рдХрдорд╛рдВрдб рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ, рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░

рдХрд░рдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдп рддреБрдЪреНрдЫ рдмрдирд╛рддреЗ рд╣реИрдВред рдЯреЗрдХреНрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдИ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рд╣реИ - рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред

рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВ - рдпреВрдирд┐рдХреНрд╕ рджрд░реНрд╢рди рдХреА рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ

рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдереЛрдбрд╝реЗ рджреВрд░ рдХреЗ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рдХреЛ рдПрдХ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдмреЗрд╣рдж рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╣рдо рдХрдорд╛рдВрдб рд╢реЗрд▓ рдореЗрдВ рдХреБрдЫ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЙрдкрдпреЛрдЧреА рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрдорд╛рдВрдб рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдкреВрд░реА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЯреАрдореЛрдВ рдХреЗ рдорди рдХреЛ рджреЗрдЦреЗрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг CSV рдлрд╝рд╛рдЗрд▓ рдСрдирд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрд▓реА


рдХрдорд╛рдВрдб рдХрд╛ catрдЙрдкрдпреЛрдЧ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

$ cat Documents/readme
Thanks again for reading this book!
I hope you're following so far!

$ cat Documents/computers
Computers are not intelligent
They're just fast at making dumb things.

$ cat Documents/readme Documents/computers
Thanks again for reading this book!
I hope you are following so far!

Computers are not intelligent
They're just fast at making dumb things.

рд╕рд┐рд░


headрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ n рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдкрд╛рда рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдХрдВрд╕реЛрд▓ рдХреЛ рднрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдкреНрд░рд╛рд░реВрдк рдХреА рдлрд╝рд╛рдЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

$ head -n 2 metadata.csv
metric_name,metric_type,interval,unit_name,per_unit_name,description,orientation,integration,short_name
mysql.galera.wsrep_cluster_size,gauge,,node,,The current number of nodes in the Galera cluster.,0,mysql,galera cluster size

рдпрджрд┐ -nрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, headрддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреА рдкрд╣рд▓реА рджрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

рдкреВрдВрдЫ


tail- рдПрдХ рдПрдирд╛рд▓реЙрдЧ head, рдХреЗрд╡рд▓ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдВрддрд┐рдо рдПрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

$ tail -n 1 metadata.csv
mysql.performance.queries,gauge,,query,second,The rate of queries.,0,mysql,queries

рдпрджрд┐ рдЖрдк nth рд▓рд╛рдЗрди (рдЗрд╕рдХреЗ рд╕рд╣рд┐рдд) рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -n +nред

$ tail -n +42 metadata.csv
mysql.replication.slaves_connected,gauge,,,,Number of slaves connected to a replication master.,0,mysql,slaves connected
mysql.performance.queries,gauge,,query,second,The rate of queries.,0,mysql,queries

рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 43 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ tail -n +42рдХреЗрд╡рд▓ 42 рд╡реАрдВ рдФрд░ 43 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ -nрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ tailрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрдВрддрд┐рдо рджрд╕ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред

tail -fрдпрд╛ tail --followрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрджрд┐ред

рд╕реНрд╡рд╛рдЧрдд


wc(рд╢рдмреНрдж рдЧрдгрдирд╛) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ ( -c), рд╢рдмреНрдж ( -w) рдпрд╛ рд░реЗрдЦрд╛рдПрдВ ( ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ -lрд╣реИред

$ wc -l metadata.csv
43  metadata.csv
$ wc -w metadata.csv
405 metadata.csv
$ wc -c metadata.csv
5094 metadata.csv

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

$ wc metadata.csv
43     405    5094 metadata.csv

рдпрджрд┐ рдкрд╛рда рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ stdin, рддреЛ рдХреЗрд╡рд▓ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

$ cat metadata.csv | wc
43     405    5094
$ cat metadata.csv | wc -l
43
$ wc -w < metadata.csv
405

рдЧреНрд░реЗрдк


grep- рдпрд╣ рдПрдХ рджрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ рдЫрд╛рдирдиреЗ рдХрд╛ рддрд╛рд░ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдореНрдпреВрдЯреЗрдХреНрд╕ рд╢рдмреНрдж рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

$ grep mutex metadata.csv
mysql.innodb.mutex_os_waits,gauge,,event,second,The rate of mutex OS waits.,0,mysql,mutex os waits
mysql.innodb.mutex_spin_rounds,gauge,,event,second,The rate of mutex spin rounds.,0,mysql,mutex spin rounds
mysql.innodb.mutex_spin_waits,gauge,,event,second,The rate of mutex spin waits.,0,mysql,mutex spin waits

grepрдпрд╛ рддреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкрд╛рда рдХреА рдПрдХ рдзрд╛рд░рд╛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ stdinред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо grepрдкрд╛рда рдХреЛ рдЖрдЧреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рдУрдПрд╕metadata.csv рджреЛрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ ред

$ grep mutex metadata.csv | grep OS
mysql.innodb.mutex_os_waits,gauge,,event,second,The rate of mutex OS waits.,0,mysql,mutex os waits

рдЖрдЗрдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ grepрдФрд░ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ ред

grep -vрд╡реНрдпреБрддреНрдХреНрд░рдо рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИ: рдРрд╕реЗ рддрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддрд░реНрдХ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред

$ grep -v gauge metadata.csv
metric_name,metric_type,interval,unit_name,per_unit_name,description,orientation,integration,short_name

grep -iрдХреЗрд╕ рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдУрдПрд╕ рдФрд░ рдУрдПрд╕grep -i os рджреЛрдиреЛрдВ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ ред

$ grep -i os metadata.csv
mysql.innodb.mutex_os_waits,gauge,,event,second,The rate of mutex OS waits.,0,mysql,mutex os waits
mysql.innodb.os_log_fsyncs,gauge,,write,second,The rate of fsync writes to the log file.,0,mysql,log fsyncs

grep -l рдПрдХ рдореЗрд▓ рдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред

$ grep -l mysql metadata.csv
metadata.csv

рдЯреАрдо grep -cрдЧрд┐рдирд╛рддреА рд╣реИ рдХрд┐ рдирдореВрдирд╛ рдХрд┐рддрдиреА рдмрд╛рд░ рдорд┐рд▓рд╛ред

$ grep -c select metadata.csv
3

grep -r рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред

$ grep -r are ~/Documents
/home/br/Documents/computers:Computers are not intelligent
/home/br/Documents/readme:I hope you are following so far!

grep -w рдХреЗрд╡рд▓ рдкреВрд░реЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред

$ grep follow ~/Documents/readme
I hope you are following so far!
$ grep -w follow ~/Documents/readme
$

рдХрдЯ рдЧрдпрд╛


cutрдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ (рдпрд╛, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо)ред рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рдХреНрд╖реЗрддреНрд░ рд╡рд┐рднрд╛рдЬрдХ (рдЬреЛ рдХреЙрд▓рдо рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ -d, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдо рдирдВрдмрд░ -fред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЖрджреЗрд╢ рд╣рдорд╛рд░реА CSV рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдВрддрд┐рдо рдкрд╛рдБрдЪ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдХреЙрд▓рдо рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

$ tail -n 5 metadata.csv | cut -d , -f 1
mysql.performance.user_time
mysql.replication.seconds_behind_master
mysql.replication.slave_running
mysql.replication.slaves_connected
mysql.performance.queries

рдЪреВрдВрдХрд┐ рд╣рдо CSV рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓рдо рдХреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ -f 1ред

рдЖрдк рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рджреЛрдиреЛрдВ рдХреЙрд▓рдо рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -f 1,2ред

$ tail -n 5 metadata.csv | cut -d , -f 1,2
mysql.performance.user_time,gauge
mysql.replication.seconds_behind_master,gauge
mysql.replication.slave_running,gauge
mysql.replication.slaves_connected,gauge
mysql.performance.queries,gauge

рдкреЗрд╕реНрдЯ


paste рдПрдХ рд╕рд╛рде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдорд▓реНрдЯреА-рдХреЙрд▓рдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд┐рд▓рд╛ рджреЗрддрд╛ рд╣реИред

$ cat ingredients
eggs
milk
butter
tomatoes
$ cat prices
1$
1.99$
1.50$
2$/kg
$ paste ingredients prices
eggs    1$
milk    1.99$
butter  1.50$
tomatoes    2$/kg

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ pasteрдПрдХ рдЯреИрдм рд╕реАрдорд╛рдВрдХрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ -dред

$ paste ingredients prices -d:
eggs:1$
milk:1.99$
butter:1.50$
tomatoes:2$/kg

рдПрдХ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ paste рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ, -sрдФрд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ -dред

$ paste -s -d, ingredients
eggs,milk,butter,tomatoes

рдпрджрд┐ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ stdinред

$ cat ingredients | paste -s -d, -
eggs,milk,butter,tomatoes

рддрд░рд╣


рдХрдорд╛рдВрдб sortрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ (рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ)ред

$ cat ingredients
eggs
milk
butter
tomatoes
salt
$ sort ingredients
butter
eggs
milk
salt
tomatoes

sort -r рд░рд┐рд╡рд░реНрд╕ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред

$ sort -r ingredients
tomatoes
salt
milk
eggs
butter

sort -n рдЦреЗрддреЛрдВ рдХреЛ рдЙрдирдХреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рди рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред

$ cat numbers
0
2
1
10
3
$ sort numbers
0
1
10
2
3
$ sort -n numbers
0
1
2
3
10

uniq


uniq рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рдорд░реВрдк рд░реЗрдЦрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред

$ cat duplicates
and one
and one
and two
and one
and two
and one, two, three
$ uniq duplicates
and one
and two
and one
and two
and one, two, three

рдЪреВрдВрдХрд┐ рдпрд╣ uniqрдХреЗрд╡рд▓ рдЖрд╕рдиреНрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдЕрднреА рднреА рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рднреА рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

$ sort duplicates | uniq
and one
and one, two, three
and two

uniq -c рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрддреА рд╣реИред

$ sort duplicates | uniq -c
   3 and one
   1 and one, two, three
   2 and two

uniq -u рдХреЗрд╡рд▓ рдЕрджреНрд╡рд┐рддреАрдп рддрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

$ sort duplicates | uniq -u
and one, two, three

рдзреНрдпрд╛рди рджреЗрдВред uniqрдпрд╣ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди | sort | uniqрдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

awk


awk- рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдкреВрд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ ред рдХреНрдпрд╛ awk рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛, рдФрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЪрдордХ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдЯреИрдм рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

$ cat -t multi-columns
John Smith    Doctor^ITardis
Sarah-James Smith^I    Companion^ILondon
Rose Tyler   Companion^ILondon

рдзреНрдпрд╛рди рджреЗрдВред cat -tрдХреЗ рд░реВрдк рдореЗрдВ рдЯреИрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ ^Iред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрд▓рдо рдпрд╛ рддреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдпрд╛ рдЯреИрдм рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рд╕реЗ рдирд╣реАрдВред cutрдпрд╣ рдпрд╣рд╛рдБ рдмреЗрдХрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди awkрдРрд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЖрд╕рд╛рди рд╣реИред

awk '{ print $n }'рдкрд╛рда рдореЗрдВ nth рдХреЙрд▓рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

$ cat multi-columns | awk '{ print $1 }'
John
Sarah-James
Rose
$ cat multi-columns | awk '{ print $3 }'
Doctor
Companion
Companion
$ cat multi-columns | awk '{ print $1,$2 }'
John Smith
Sarah-James Smith
Rose Tyler

рдпрджреНрдпрдкрд┐ awkрдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо, рд╡рдХреНрддрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╕рдВрднрд╡рддрдГ рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ 99% рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВред { print $NF }рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЯреАрдЖрд░


trрдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ ред рдпрд╣ рдЖрджреЗрд╢ рдПрдХ рд╡рд░реНрдг рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдг рдпрд╛ рдЪрд░рд┐рддреНрд░ рд╡рд░реНрдЧ рдЬреИрд╕реЗ рд▓реЛрдЕрд░рдХреЗрд╕, рдЯрд╛рдЗрдк, рд╕реНрдкреЗрд╕, рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

ред рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдкрд░, рдпрд╣ tr <char1> <char2><char1> рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ <char2> рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

$ echo "Computers are fast" | tr a A
computers Are fAst

trрд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдг рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ [:class:]ред рдЙрдкрд▓рдмреНрдз рд╡рд░реНрдЧреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдореИрди рдкреЗрдЬ рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ tr, рд▓реЗрдХрд┐рди рдХреБрдЫ рдпрд╣рд╛рдБ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

[:space:]рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдЯреИрдм рдпрд╛ рдиреНрдпреВрд▓рд╛рдЗрдиреНрд╕ рддрдХ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

$ echo "computers are fast" | tr '[:space:]' ','
computers,are,fast,%

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рддрд░рд╣ рд╕рднреА рд╡рд░реНрдг, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ %рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд░реНрдг рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рдирдИ рдкрдВрдХреНрддрд┐ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдпрд╣ рдЪрд░рд┐рддреНрд░ рднреА рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

[:lower:]рд╕рднреА рд▓реЛрдЕрд░рдХреЗрд╕ рд╡рд░реНрдгреЛрдВ рдФрд░ [:upper:] рд╕рднреА рдЕрдкрд░рдХреЗрд╕ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рддреБрдЪреНрдЫ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

$ echo "computers are fast" | tr '[:lower:]' '[:upper:]'
COMPUTERS ARE FAST
$ echo "COMPUTERS ARE FAST" | tr '[:upper:]' '[:lower:]'
computers are fast

tr -c SET1 SET2рдХрд┐рд╕реА рднреА рдЪрд░рд┐рддреНрд░ рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдирд╣реАрдВ SET2 рдореЗрдВ рдкрд╛рддреНрд░реЛрдВ рдХреЛ SET1 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрдХреЗрддрд┐рдд рд╕реНрд╡рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╡рд░реНрдг рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

$ echo "computers are fast" | tr -c '[aeiouy]' ' '
 o  u e   a e  a

tr -dрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдг рд╣рдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд░рд╛рдмрд░ рд╣реИ tr <char> ''ред

$ echo "Computers Are Fast" | tr -d '[:lower:]'
C A F

trрдпрд╣ рднреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░рд┐рддреНрд░ рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдХреА рдЬрдЧрд╣ рд▓реЗ рд╕рдХрддрд╛, рдХреЗ рдмреАрдЪ рд╕рднреА рдкрддреНрд░ рдПрдХ рдФрд░ рдИ 1 рдФрд░ 8 рдХреЗ рдмреАрдЪ рдпрд╛ рд╕рднреА рдирдВрдмрд░реЛрдВ рдХреЛ рдЕрдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ s-e, рдЬрд╣рд╛рдВ s рд╢реБрд░реВ рдХрд░рдиреЗ рдЪрд░рд┐рддреНрд░ рд╣реИ, рдФрд░ e рди рдЦрддреНрдо рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИред

$ echo "computers are fast" | tr 'a-e' 'x'
xomputxrs xrx fxst
$ echo "5uch l337 5p34k" | tr '1-4' 'x'
5uch lxx7 5pxxk

рдХрдорд╛рдВрдб рдПрдХ рдПрдХрд▓ рдореЗрдВ tr -s string1рд╡рд░реНрдгреЛрдВ рдХреА рд╕рднреА рдПрдХрд╛рдзрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ string1ред рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧреЛрдВ tr -sрдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рдХреЗ рд╕рд╛рде рдХрдИ рд▓рдЧрд╛рддрд╛рд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред

$ echo "Computers         are       fast" | tr -s ' '
Computers are fast

рддрд╣


рдХрдорд╛рдВрдб foldрд╕рднреА рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЪреМрдбрд╝рд╛рдИ рддрдХ рдврд╣рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рда рдЫреЛрдЯреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рддреЛ, fold -w nрдЪреМрдбрд╝рд╛рдИ n рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдвреЗрд░ рдХрд░рддрд╛ рд╣реИред

$ cat ~/Documents/readme | fold -w 16
Thanks again for
 reading this bo
ok!
I hope you're fo
llowing so far!

рдЖрджреЗрд╢ fold -sрдХреЗрд╡рд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рд╡рд░реНрдгреЛрдВ рдкрд░ рд▓рд╛рдЗрдиреЗрдВ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдгреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Thanks again
for reading
this book!
I hope you're
following so
far!

sed


sedрдПрдХ рдиреЙрди-рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рд╕реНрдЯреНрд░реАрдо рдПрдбрд┐рдЯрд░ рд╣реИ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрди рдореЗрдВ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрдиреНрд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛, stdinрдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ stdoutред

рд╕рдВрдкрд╛рджрдХ рдХрдорд╛рдВрдб рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкрддреЗ , рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрджреЗрд╢ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

[address[,address]]function[arguments]

рдпрджреНрдпрдкрд┐ рдпрд╣ sedрдХрдИ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдкрд╛рда рдХреА рдЬрдЧрд╣ рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдкрд╛рда рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди


рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЖрджреЗрд╢ sedрдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

s/PATTERN/REPLACEMENT/[options]

рдЙрджрд╛рд╣рд░рдг : рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд┐рд╕реА рд╢рдмреНрдж рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрджрд▓рдирд╛:

$ cat hello
hello hello
hello world!
hi
$ cat hello | sed 's/hello/Hey I just met you/'
Hey I just met you hello
Hey I just met you world
hi

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ helloред рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП hello, рдЖрдк рд╡рд┐рдХрд▓реНрдк g( рд╡реИрд╢реНрд╡рд┐рдХ рдЕрд░реНрде ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

$ cat hello | sed 's/hello/Hey I just met you/g'
Hey I just met you Hey I just met you
Hey I just met you world
hi

sedрдЖрдкрдХреЛ рд╕рд┐рд╡рд╛рдп рдХрд┐рд╕реА рднреА рд╕реАрдорд╛рдВрдХрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ /, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдХрдорд╛рдВрдб рдХреЗ рддрд░реНрдХ рдореЗрдВ рд╕реНрд╡рдпрдВ рд╕реНрд▓реИрд╢ рд╣реИрдВред

$ cat hello | sed 's@hello@Hey I just met you@g'
Hey I just met you Hey I just met you
Hey I just met you world
hi

рдкрддрд╛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рд╕ рд▓рд╛рдЗрди рдпрд╛ рд▓рд╛рдЗрди рдХреА рдЬрдЧрд╣ рдкрд░ рд╕рдмрд╕реНрдЯреЗрд╢рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

$ cat hello | sed '1s/hello/Hey I just met you/g'
Hey I just met you hello
hello world
hi
$ cat hello | sed '2s/hello/Hey I just met you/g'
hello hello
Hey I just met you  world
hi

рдкрддрд╛ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ 1рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд helloрд╣реЛрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ Hey I just met youред рд╣рдо рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдкрддреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ <start>,<end>, рдЬрд╣рд╛рдВ рдпрд╣ <end>рдпрд╛ рддреЛ рд▓рд╛рдЗрди рдирдВрдмрд░ рдпрд╛ $рдлрд╛рдЗрд▓ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

$ cat hello | sed '1,2s/hello/Hey I just met you/g'
Hey I just met you Hey I just met you
Hey I just met you world
hi
$ cat hello | sed '2,3s/hello/Hey I just met you/g'
hello hello
Hey I just met you world
hi
$ cat hello | sed '2,$s/hello/Hey I just met you/g'
hello hello
Hey I just met you world
hi

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ sedрдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ stdout, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреА рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ -iред

$ sed -i '' 's/hello/Bonjour/' sed-data
$ cat sed-data
Bonjour hello
Bonjour world
hi

рдзреНрдпрд╛рди рджреЗрдВред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдмрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ -iред рд▓реЗрдХрд┐рди рдореИрдХрдУрдПрд╕ рдкрд░, рдХрдорд╛рдВрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП -iрдЖрдкрдХреЛ рд╕рд╣реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ''ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг


CSV рдХреЛ grep рдФрд░ awk рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛


$ grep -w gauge metadata.csv | awk -F, '{ if ($4 == "query") { print $1, "per", $5 } }'
mysql.performance.com_delete per second
mysql.performance.com_delete_multi per second
mysql.performance.com_insert per second
mysql.performance.com_insert_select per second
mysql.performance.com_replace_select per second
mysql.performance.com_select per second
mysql.performance.com_update per second
mysql.performance.com_update_multi per second
mysql.performance.questions per second
mysql.performance.slow_queries per second
mysql.performance.queries per second

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ grep, рдлрд╝рд╛рдЗрд▓ metadata.csvрдкрд╣рд▓реЗ рд╢рдмреНрдж рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИ gauge, рдлрд┐рд░ queryрдЪреМрдереЗ рдХреЙрд▓рдо рд╡рд╛рд▓реЗ, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рди per_unit_name(5 рд╡реЗрдВ рдХреЙрд▓рдо) рдХреЗ рд╕рд╛рде рдореАрдЯреНрд░рд┐рдХ рдирд╛рдо (1 рдХреЙрд▓рдо) рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ ред

рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ IPv4 рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ


$ ifconfig en0 | grep inet | grep -v inet6 | awk '{ print $2 }'
192.168.0.38

рдЖрджреЗрд╢ ifconfig <interface name>рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 19:64:92:de:20:ba
    inet6 fe80::8a3:a1cb:56ae:7c7c%en0 prefixlen 64 secured scopeid 0x7
    inet 192.168.0.38 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ grepрдХреЗ рд▓рд┐рдП inet, рдХрд┐ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред

$ ifconfig en0 | grep inet
    inet6 fe80::8a3:a1cb:56ae:7c7c%en0 prefixlen 64 secured scopeid 0x7
    inet 192.168.0.38 netmask 0xffffff00 broadcast 192.168.0.255

рдлрд┐рд░, рдХреЗ grep -vрд╕рд╛рде рд▓рд╛рдЗрди рдХреЛ рдмрд╛рд╣рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ipv6ред

$ ifconfig en0 | grep inet | grep -v inet6
inet 192.168.0.38 netmask 0xffffff00 broadcast 192.168.0.255

рдЕрдВрдд рдореЗрдВ, рдорджрдж рдХреЗ рд╕рд╛рде, рд╣рдо awkрдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреВрд╕рд░реЗ рдХреЙрд▓рдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ: рдпрд╣ рд╣рдорд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рдЖрдИрдкреАрд╡реА 4 рдкрддрд╛ рд╣реИ en0ред

$ ifconfig en0 | grep inet | grep -v inet6 | awk '{ print $2 }'
192.168.0.38

рдзреНрдпрд╛рди рджреЗрдВред рдореБрдЭреЗ рдРрд╕реА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯреАрдо рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ :grep inet | grep -v inet6awk

$ ifconfig en0 | awk ' $1 == "inet" { print $2 }'
192.168.0.38

рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде IPv4 рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖рд┐рдд рд╣реИ $1 == "inet"ред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


$ grep 'editor =' ~/.gitconfig  | cut -d = -f2 | sed 's/ //g'
/usr/bin/vim

рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА git рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдорд╛рди рджреЗрдЦреЗрдВ editor =, рд╡рд░реНрдг рдХреНрд░реЙрдк рдХрд░реЗрдВ =, рджреВрд╕рд░рд╛ рдХреЙрд▓рдо рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рднреА рд╕реНрдкреЗрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

$ grep 'editor =' ~/.gitconfig
     editor = /usr/bin/vim
$ grep 'editor =' ~/.gitconfig  | cut -d'=' -f2
 /usr/bin/vim
$ grep 'editor =' ~/.gitconfig  | cut -d'=' -f2 | sed 's/ //'
/usr/bin/vim

рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрдИрдкреА рдирд┐рдХрд╛рд▓реЗрдВ


рдирд┐рдореНрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИ Too many connections from(рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрд╛рдж) рдФрд░ рджрд╕ рдореБрдЦреНрдп рдШреБрд╕рдкреИрдард┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

$ grep 'Too many connections from' db.log | \
  awk '{ print $12 }' | \
  sed 's@/@@' | \
  sort | \
  uniq -c | \
  sort -rn | \
  head -n 10 | \
  awk '{ print $2 }'
   10.11.112.108
   10.11.111.70
   10.11.97.57
   10.11.109.72
   10.11.116.156
   10.11.100.221
   10.11.96.242
   10.11.81.68
   10.11.99.112
   10.11.107.120

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреНрдпрд╛ рдХрд░рддреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реЙрдЧ рдореЗрдВ рд░реЗрдЦрд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИред

$ grep "Too many connections from" db.log | head -n 1
2020-01-01 08:02:37,617 [myid:1] - WARN  [NIOServerCxn.Factory:1.2.3.4/1.2.3.4:2181:NIOServerCnxnFactory@193] - Too many connections from /10.11.112.108 - max is 60

рдпрд╣ awk '{ print $12 }'рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

$ grep "Too many connections from" db.log | awk '{ print $12 }'
/10.11.112.108
...

рдЖрджреЗрд╢ sed 's@/@@'рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрд▓реИрд╢ рд╣рдЯрд╛рддрд╛ рд╣реИред

$ grep "Too many connections from" db.log | awk '{ print $12 }' | sed 's@/@@'
10.11.112.108
...

рдзреНрдпрд╛рди рджреЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, sedрдЖрдк рдХрд┐рд╕реА рднреА рд╡рд┐рднрд╛рдЬрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ /, рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЪрд░рд┐рддреНрд░ рдХреА рдЬрдЧрд╣ рд▓реЗ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

sed 's/\///'

sort | uniq -c IP рдкрддреЗ рдХреЛ рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдХреНрд░рдо рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ IP рдкрддреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝рдХрд░, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

$ grep 'Too many connections from' db.log | \
  awk '{ print $12 }' | \
  sed 's@/@@' | \
  sort | \
  uniq -c
   1379 10.11.100.221
   1213 10.11.103.168
   1138 10.11.105.177
    946 10.11.106.213
   1211 10.11.106.4
   1326 10.11.107.120
   ...

sort -rn | head -n 10рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреНрд░рдо рд╕реЗ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдФрд░ рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдореБрдЦреНрдп рдЙрд▓реНрд▓рдВрдШрдирдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 10 рд░реЗрдЦрд╛рдПрдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВред рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб awk { print $2 }рдЖрдИрдкреА тАЛтАЛрдкрддреЗ рдХреЛ рд╕реНрд╡рдпрдВ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

$ grep 'Too many connections from' db.log | \
  awk '{ print $12 }' | \
  sed 's@/@@' | \
  sort | \
  uniq -c | \
  sort -rn | \
  head -n 10 | \
  awk '{ print $2 }'
  10.11.112.108
  10.11.111.70
  10.11.97.57
  10.11.109.72
  10.11.116.156
  10.11.100.221
  10.11.96.242
  10.11.81.68
  10.11.99.112
  10.11.107.120

рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛


рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рдлрд╝рдВрдХреНрд╢рди (рдпрд╛ рд╡рд░реНрдЧ, рдЪрд░, рдЖрджрд┐) рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ sed -iрдЬреЛ рд╕реАрдзреЗ рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

$ cat izk/utils.py
def bool_from_str(s):
    if s.isdigit():
        return int(s) == 1
    return s.lower() in ['yes', 'true', 'y']

$ sed -i 's/def bool_from_str/def is_affirmative/' izk/utils.py
$ cat izk/utils.py
def is_affirmative(s):
    if s.isdigit():
        return int(s) == 1
    return s.lower() in ['yes', 'true', 'y']

рдзреНрдпрд╛рди рджреЗрдВред MacOS рдкрд░, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп sed -iрдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ sed -i ''ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ред рдпрд╣ bool_from_strрдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдм рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ bool_from_strрдЕрдкрдиреЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ ред рдпрд╣ рдХрдорд╛рдВрдб grep, sedрд╕рд╛рде рд╣реА рд▓реВрдк forрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ xargsред

рдЧрд╣рд░рд╛ рд╣реЛрдирд╛: рдЪрдХреНрд░ forрдФрд░xargs


рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП bool_from_str, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдкреБрди: рдЦреЛрдЬ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП grep -rред

$ grep -r bool_from_str .
./tests/test_utils.py:from izk.utils import bool_from_str
./tests/test_utils.py:def test_bool_from_str(s, expected):
./tests/test_utils.py:    assert bool_from_str(s) == expected
./izk/utils.py:def bool_from_str(s):
./izk/prompt.py:from .utils import bool_from_str
./izk/prompt.py:                    default = bool_from_str(os.environ[envvar])

рдЪреВрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдореИрдЪреЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП -l/--files-with-matches:

-l, --files-with-matches
        Only the names of files containing selected lines are written to standard out-
        put.  grep will only search a file until a match has been found, making
        searches potentially less expensive.  Pathnames are listed once per file
        searched.  If the standard input is searched, the string ``(standard input)''
        is written.

$ grep -r --files-with-matches bool_from_str .
./tests/test_utils.py
./izk/utils.py
./izk/prompt.py

рдлрд┐рд░ рд╣рдо xargsрдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд▓рд╛рдЗрди рд╡рд╛рд▓реА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ bool_from_str)ред

$ grep -r --files-with-matches bool_from_str . | \
  xargs -n 1 sed -i 's/bool_from_str/is_affirmative/'

рд╡рд┐рдХрд▓реНрдк -n 1рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП sedред

рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

$ sed -i 's/bool_from_str/is_affirmative/' ./tests/test_utils.py
$ sed -i 's/bool_from_str/is_affirmative/' ./izk/utils.py
$ sed -i 's/bool_from_str/is_affirmative/' ./izk/prompt.py

рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рдХрдорд╛рдВрдб xargs(рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ sed) рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдХрдИ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ -n 1рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП ред

grep -r --files-with-matches bool_from_str . | xargs sed -i 's/bool_from_str/is_affirmative/'

рдпрд╣ рдХрдорд╛рдВрдб рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛

$ sed -i 's/bool_from_str/is_affirmative/' ./tests/test_utils.py ./izk/utils.py ./izk/prompt.py

рдзреНрдпрд╛рди рджреЗрдВред sedрдореИрди рдкреЗрдЬ рдкрд░ рд╕рд╛рд░рд╛рдВрд╢ рд╕реЗ , рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдо рдХрдИ рддрд░реНрдХ рджреЗ рд╕рдХрддреА рд╣реИред

SYNOPSIS
     sed [-Ealn] command [file ...]
     sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]

рджрд░рдЕрд╕рд▓, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рджреЗрдЦрд╛, рдЗрд╕рдХрд╛ file ...рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдИ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╣реИрдВред

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ bool_from_strред

$ grep -r is_affirmative .
./tests/test_utils.py:from izk.utils import is_affirmative
./tests/test_utils.py:def test_is_affirmative(s, expected):
./tests/test_utils.py:    assert is_affirmative(s) == expected
./izk/utils.py:def is_affirmative(s):
./izk/prompt.py:from .utils import is_affirmative
./izk/prompt.py:                    default = is_affirmative(os.environ[envvar])

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реА рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, xargsрд╣рдо forрд╕реВрдЪреА рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЫреЛрд░реЛрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИрдВ:

for item in list; do
    command $item
done

рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдХреЛ grepрдЕрдВрджрд░ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ $(), рддреЛ рд╢реЗрд▓ рдЗрд╕реЗ рдПрдХ рд╕рдм- рд╕рдмреНрдорд┐рдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ , рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд╛рдж рдореЗрдВ рд▓реВрдк рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ forред

$ for file in $(grep -r --files-with-matches bool_from_str .); do
  sed -i 's/bool_from_str/is_affirmative/' $file
done

рдпрд╣ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛

$ sed -i 's/bool_from_str/is_affirmative/' ./tests/test_utils.py
$ sed -i 's/bool_from_str/is_affirmative/' ./izk/utils.py
$ sed -i 's/bool_from_str/is_affirmative/' ./izk/prompt.py

рд▓реВрдк рд╕рд┐рдВрдЯреИрдХреНрд╕ forрдореБрдЭреЗ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ xargs, рд▓реЗрдХрд┐рди рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ -P n, рдЬрд╣рд╛рдВ nрдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдорд╛рдВрдб рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рджреЗ рд╕рдХрддреА рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢


рдпреЗ рд╕рднреА рдЙрдкрдХрд░рдг рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЙрди рдЯреАрдореЛрдВ рд╕реЗ рдкреВрд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА рднреА рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рдЫрдВрдЯрд╛рдИ sort, рд╕рдВрдпреЛрдЬрди cat, рдлрд┐рд▓реНрдЯрд░ grep, рд╕рдВрдкрд╛рджрди sed, рдХрд╛рдЯрдиреЗ cut, рдЖрджрд┐)ред

рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдЬрд┐рд╕рдореЗрдВ рдкрд╛рда рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреЛ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рддрдХ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рддрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдИрдкреА рдкрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпреЗ рдЖрдИрдкреА рдкрддреЗ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдХреЙрд▓рдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • grep рддрд╛рд░ рдЬреЛ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рддрд╛рд░ рдХреЗ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ
  • IP рдкрддреЗ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдвреВрдВрдвреЗрдВ, рдЗрд╕реЗ рд╕рд╛рде рдирд┐рдХрд╛рд▓реЗрдВ awk
  • рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЖрдИрдкреА рдкрддреЗ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ sort
  • рдирд┐рдХрдЯрд╡рд░реНрддреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ uniq
  • рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдпрд╛рдиреА рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдкреА рдкрддреЗ) рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ wc -l

рдЪреВрдВрдХрд┐ рдХрдИ рджреЗрд╢реА рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╢рдмреНрдж рд╕рдВрд╕рд╛рдзрди рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рднреА рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рджреВрд░ рдХреЗ рдереЗ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЕрджреНрднреБрдд рд▓реЗрдЦ "рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЯреВрд▓ рдЖрдкрдХреЗ Hadoop рдХреНрд▓рд╕реНрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 235 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпреЗ рдХрдорд╛рдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧреА рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рд╡реЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛


  1. рдЕрдкрдиреЗ рдШрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
  2. .
  3. , .
  4. . .



┬л ┬╗ (Essential Tools and Practices for the Aspiring Software Developer) , . , , , , git, SQL, Make, jq , , .

, !

All Articles