grep file foo | while read line ; do echo "$line" | date %s.%N ; done
Più essere letti in uno script:
grep file foo | while read line
do
echo "$line" | date %s.%N
done
Per ciascuna linea di ingresso, read
metterà il valore nella variabile $line
, e l'istruzione while
eseguirà il corpo del ciclo tra do
e done
. Poiché il valore è ora in una variabile e non nello stdin, ho utilizzato echo
per reinserirlo nello stdin, ma è sufficiente eseguire date %s.%N "$line"
, presupponendo che la data funzioni in questo modo.
Evitare di utilizzare for line in `grep file foo`
che è simile, perché for
rompe sempre su spazi e questo diventa un incubo per la lettura di elenchi di file:
find . -iname "*blah*.dat" | while read filename; do ....
fallirebbe con for
.
fonte
2012-11-15 16:39:00
Nessun problema. Esistono strumenti Unix per la maggior parte delle attività di massa, incluse cose come la capacità di grep di leggere più schemi da un file (-f), o la capacità di xargs di costruire comandi da stdin. –
Se ciò non fosse: grep file foo ------- NOME grep, egrep, fgrep, rgrep - linee di stampa corrispondono ad un modello SINOSSI grep [opzioni] Pattern [FILE .. .] – Xofo
come posso eseguire lo script: file grep foo | mentre leggi la riga do echo "$ line" | data% s.% N completata Devo inserire un file? –