Osa IV: Tekst, otsing ja automatiseerimine — täisspikker
Selle osa spikrid on siin koos ühel lehel. Neid saab kasutada kordamiseks, kiireks viitamiseks ja eraldi PDF-ina printimiseks.
Teksti otsimine: grep ja sugulased
Töövood
Eesmärk
Vali tekstist sobivad read; erista täpset teksti regulaaravaldisest.
Otsingukuju ja tulemus
grep 'kass' loomad.txtka pikema sõna sees; väljastab terve reagrep -in 'kass' loomad.txteira tähesuurust, lisa reanumbridgrep -x 'kass' loomad.txtainult tervenisti sobiv ridagrep -v '^#' seadistus.confjäta välja # märgiga algavad readgrep -F '.json' nimed.txtpunkt tähendab päris punkti, mitte suvalist märkigrep -rn 'TODO' .otsi failipuust koos failinimede ja reanumbritegagrep -c 'kass' loomad.txtloenda vastega ridu, mitte kõiki esinemisi
grep-i tulemuskoodid
0vähemalt üks vaste1vasteid pole, mitte tingimata viga2tavaliselt viga; loe veateadet
Teksti teisendamine: tr, cut, paste, column, strings
Töövood
Eesmärk
need väikesed filtrid muudavad tekstivoo kuju kiiresti: märgid, väljad, veerud ja tabelid ilma eraldi skriptita
Põhikujud
echo 'tere maailm' | tr '[:lower:]' '[:upper:]'muuda suurtäheksecho 'a,b,c' | tr ',' '\n'tee ridadekscut -d ':' -f 1 andmed.txtvõta esimene välicut -d ':' -f 1,3 andmed.txtvõta mitu väljaprintf 'nimi vanus\nMari 20\n' | column -tjoonda tabelstrings /bin/ls | head -n 20loe binaarist tekstpastekleebi veerge
Olulisemad lipud, märgid ja kiirnupud
[:lower:]väiketähed[:upper:]suurtähedcut -dvali eraldajacut -fvali väljadcolumn -tjoonda tabelstringstekstijupid
Vood ja tabelid: sort, uniq, wc, pr, join
Töövood
Eesmärk
tüüpiline töövoog on: sorteeri read, koonda kordused ja loe tulemused kokku
Põhikujud
sort viljad.txtsordi readsort viljad.txt | uniqeemalda kordusedsort viljad.txt | uniq -cloe kordusedwc -l data/sample-text.txtloe readwc -w data/sample-text.txtloe sõnadjoin nimed.txt linnad.txtühenda võtme järgiprjaga veergudeks
Olulisemad lipud, märgid ja kiirnupud
sort -nnumbridsort -rtagurpidiuniq -cloenda kordusedwc -lridade arvwc -wsõnade arvpr -2kaks veergu
sed, awk ja perl praktiliselt
Töövood
Eesmärk
kasuta sed lihtsaks asenduseks, awk väljade jaoks ja perl siis, kui vajad tugevamat regulaaravaldiste loogikat
Põhikujud
echo 'kass koer kass' | sed 's/kass/rebane/'asenda esimeneecho 'kass koer kass' | sed 's/kass/rebane/g'asenda kõikprintf 'Mari:20\nJaan:21\n' | awk -F: '{print $1}'võta esimene väliprintf 'Mari:20\nJaan:21\n' | awk -F: '{print $1, $2}'võta kaks väljaecho 'kass koer kass' | perl -pe 's/kass/rebane/g'asenda Perligaprintf 'Mari\nJaan\n' | perl -ne 'print if /Ja/'filtreeri Perliga
Olulisemad lipud, märgid ja kiirnupud
s/vana/uus/üks asendus/gkõik vasted-F:koolon väljade vahel$1esimene väli$2teine väli-pe/-neread läbi
`find` ja `xargs` ohutumalt
Töövood
Eesmärk
otsi failid find-iga ja anna need ohutult edasi järgmisele käsule, isegi siis, kui nimedes on tühikuid
Põhikujud
find . -type f -name '*.txt'otsi failidfind . -type f -name '*.txt' -print0 | xargs -0 wc -lloe read ohutultfind . -type f -name '*.log' -exec ls -lh {} +käivita otsefind data -type f -name '*.txt' -print0 | while IFS= read -r -d '' fail; do head -n 1 "$fail"; donetöötle ükshaaval
Olulisemad lipud, märgid ja kiirnupud
-type ffind: ainult tavafailid-name '*.txt'nime järgi-print0find: failinimede vahel nullmärkxargs -0xargs: eralda argumendid nullmärgiga-exec käsk {} +käivita otseread -r -d ''Bash/zsh: loe nullmärgini, säilita kaldkriipsud
Esimene shelliskript
Töövood
Eesmärk
esimese shelliskripti tuum on viis asja: shebang, käivitatavus, argumendid, lihtne tingimus ja lõpetuskood
Põhikujud
chmod +x tervita.shtee käivitatavaks./tervita.sh Mari Jaankäivita argumentidega./tervita.shnäe veajuhtumitecho $?vaata lõpetuskoodibash skript.shkäivita Bashigash skript.shkäivita sh-ga./skript.shkasuta shebang-rida
Olulisemad lipud, märgid ja kiirnupud
#!/usr/bin/env bashvali Bash$1esimene argument"$@"kõik argumendidif ... fitingimusfor ... donekordusexit 0 / exit 1edu või viga
`cron` ja ajastatud tööd
Töövood
Eesmärk
Ajasta läbiproovitud käsk; kasuta täisteid ja talleta väljund logisse.
Käsud ja näited
crontab -lvaata praeguse kasutaja ajastusicrontab -emuuda tabelit, säilitades muud tööd/bin/date >> "$HOME"/cron-naide.log 2>&1testi ajastatavat käsku käsitsitail -n 5 "$HOME"/cron-naide.logkontrolli, kas töö lisab kirjeid
Märgid ja valikud
*/15 * * * *minutitel 0, 15, 30 ja 450 8 * * 1-5tööpäeviti kell 08.00 süsteemi ajavööndiscrontab failasendab kogu kasutaja ajastustabelicrontab -reemaldab kogu kasutaja ajastustabeli