Vedo molti esempi e pagine man su come fare cose come cercare e sostituire usando sed, awk o gawk.come usare sed, awk o gawk per stampare solo ciò che corrisponde?
Ma nel mio caso, ho un'espressione regolare che voglio eseguire su un file di testo per estrarre un valore specifico. Non voglio fare ricerche e sostituzioni. Questo viene chiamato da bash. Facciamo un esempio:
Esempio espressione regolare: file di input
.*abc([0-9]+)xyz.*
Esempio:
a
b
c
abc12345xyz
a
b
c
Semplice come questo suona, io non riesco a capire come chiamare sed/awk/gawk correttamente . Quello che speravo di fare, è da dentro il mio script bash sono:
myvalue=$(sed <...something...> input.txt)
Le cose che ho provato sono:
sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file
sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing
Wow ... la gente ha votato questa domanda -1? È davvero inappropriato per una domanda? –
Sembra perfettamente appropriato, usando Regex e potenti utility da riga di comando come sed/awk o qualsiasi editor come vi, emacs o teco può essere più simile alla programmazione che usare solo una vecchia applicazione. IMO questo appartiene a SO più di SU. – Dereleased
Forse è stato votato in ribasso perché nella sua forma iniziale non ha definito chiaramente alcune delle sue esigenze. Non funziona ancora, a meno che non si leggano i commenti dell'OP alle risposte (incluso quello che ho cancellato quando le cose andavano a pera). – pavium