Vale la pena di imparare Awk?

Sono decente con bash scripting e sto accostando a regex, e un piccolo utilizzo sed. L'apprendimento awk vale ancora con tutte le alternative là fuori. Opinioni?

  • nome utente e password per rsync nello script
  • Bash Scripting: richiede che il script sia eseguito come root (o con sudo)
  • aiuto con script bash usando il command find e diff
  • sed + delete line solo se la row è terminata con carattere specifico
  • Come posso utilizzare SetUID su uno script di shell per eseguire come utente non root?
  • Rsync: Sincronizzazione file / cartella generale
  • 5 Solutions collect form web for “Vale la pena di imparare Awk?”

    Le diverse alternative esistono, non perché ognuno può fare la stessa cosa dell'altro (anche se questo è vero per casi localizzati o per linguaggi di programmazione come Perl), ma piuttosto perché possono fare cose diverse .

    sed non è molto adatto per elaborare i dati tabulari, e usando la bash pura per che è di solito più dolore di quello che vorrebbe. awk funziona quasi banalmente sui dati tabulari, e può anche essere usato per scrivere piccole macchine statali. Trascorti un po 'di tempo a guardare le varie soluzioni awk su Overflow Stack per alcune idee su cosa può fare.

    Io uso awk per tutto il tempo e evita di scrivere o utilizzare perl quanto più ansible. Perl ha voluto fare troppo e diventato un linguaggio generale, ma purtroppo ha una syntax orribile e illeggibile, IMHO. Il mantenimento di script perl che è stato scritto da qualcun altro è un dolore e questo tende ad essere vero per i nostri script anche dopo un po '.

    D'altra parte, awk ha un ambito limitato, ma ben definito e funziona bene con esso. Si interface relativamente bene anche con script shell, a differenza di perl.

    Quanto a bash essere un sopravvissuto, preferisco ksh93 se mi chiedete.

    Difficilmente chiamerei Perl "morire", qualunque altra opinione che potresti trattenere

    Poiché hai fatto il confronto Awk vs Perl, potrebbe essere interessato a guardare il libro Minimal Perl . Esso mostra come Perl si confronta con diverse utility di row di command Unix / Linux. Dovrebbe darti abbastanza informazioni per prendere una decisione più informata su cosa studiare, indipendentemente dalla vostra scelta.

    Personalmente, penso che ci siano migliori scelte che Awk, e solo imparare se era chiaramente la scelta migliore per il mio task a portta di mano. Ma poi di nuovo, potrei dire lo stesso su un sacco di cose …

    Io uso ancora awk a volte – anche se uso più frequentemente Perl. Se non volete imparare Perl perché pensate che sta morendo (una vista che non sono d'accordo, ma hai diritto alla tua visione), allora consideri Python invece. Per l'elaborazione semplice dei dati colonnari, l'awk è eccellente. Per un lavoro più generale, Perl o Python sono eccellenti. Dopo di che, si stanno muovendo in sisthemes di sisthemes pesanti e forse C o C ++ (o Go, o …).

    Bash è un guscio molto potente. Ci sono ancora cose che Perl può fare che Bash non può. Devo ancora scrivere codice che funziona con altre shell, quindi devo stare attento a quello che uso dal set di funzioni Bash. Sapere bene sarà bene – ma gli altri strumenti hanno anche il loro posto.

    Quindi, se hai il tempo di imparare awk moderatamente bene, o sarà facile per te perché sei già esperto nei componenti (espressioni regolari estese, syntax simile a C), allora è uno strumento occasionalmente utile per avere a tua disposizione. Potresti preferire invece imparare Perl o Python invece.

    Dipende dal tuo livello di comfort.

    Sono venuto alla shell tramite perl, quindi sono comodo usare il perl per cose complicate.

    Tuttavia ritengo che più mi sto facendo, voglio fare cose più complicate in shell one-liners anziché affrontare il sovraccarico di un "appropriato" script perl. Trovo awk uno strumento prezioso per fare cose complicate.

    Non fa mai male ad imparare un po 'di tutto, anche se è sufficiente per capire che questo particolare strumento non si inserisce nei tuoi modi di fare le cose.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.