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
grep valib sisendist välja ainult need read, mis sobivad mustriga; see on filtritööriist, mitte tekstiredaktor
Põhikujud
grep 'kass' loomad.txtotsi ühest failistgrep -i 'kass' loomad.txtotsi tõstutagrep -n 'koer' loomad.txtnäita reanrgrep -r 'TODO' .otsi puustgrep -F 'https://example.com' fail.txtotsi täpset sõnetgrep -v '^#' seadistus.confjäta kommentaarid välja
Olulisemad lipud, märgid ja kiirnupud
-itõstutundetu-nreanumbrid-rrekursiivne-vjäta vasted välja-Ftäpne sõne-Elaiendatud regex
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 fainult failid-name '*.txt'nime järgi-print0ohutu eraldusxargs -0loe ohutult-exec {} +käivita otseread -r -d ''loe nullmärgini
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'i
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
ajastatud töö tähendab, et käsk jookseb kindlal ajal ilma sinu avatud terminalita; tähtsad on ajaväljad, täisrajad ja logifail
Põhikujud
crontab -lvaata olemasolevatcrontab naide.cronpaigalda fail/bin/date >> "$HOME"/cron-naide.log 2>&1testi käsitsitail -n 5 "$HOME"/cron-naide.logvaata logi
Olulisemad lipud, märgid ja kiirnupud
*/15 * * * *iga 15 min>>lisa logisse2>&1vead samasse$HOMEkasutaja kodu/bin/datetäisrada