Ho un file str.txt
con i seguenti record di esempio.
31,2713810299,1,11-Aug-15 19:52:10 32,2713810833,1,11-Aug-15 21:36:18
Ora voglio stampare loutput con awk come di seguito.
cat str.txt|awk -F, "{print substr("$4",1,9)}" -
Loutput dovrebbe essere :
"11-Aug-15" "11-Aug-15"
Risposta
una singola citazione sarebbe \x27
awk -F, "{print "\x27"substr($4,1,9)"\x27" }"
Commenti
- Usa ottale
\047
per'
, non hex\x27
. Vedi awk.freeshell.org/PrintASingleQuote . - \ x22 per virgolette doppie (nel caso ne avessi bisogno)
Risposta
POSIXly:
awk -F"[ ,]" -v q=""" "{print q$4q}" <file
Risposta
Un approccio leggermente diverso, per POSIX Awk:
awk -F"[, ]" "{printf "\047%s\047\n", $4}" file "11-Aug-15" "11-Aug-15"
Risposta
Puoi utilizzare il comando awk
in questo modo:
cat str.txt|awk -F, "{print substr($4,1,9)}" -
Per ottenere il seguente output:
11-Aug-15 11-Aug-15
Se le virgolette singole richiedono allinizio e alla fine delle righe, allora:
cat str.txt|awk -F, "{printf "\047%s\047\n",substr($4,1,9)}" -
Per ottenere il seguente output:
"11-Aug-15" "11-Aug-15"
Commenti
- Nessun singolo vengono stampate le virgolette, che la domanda specifica …
- @jasonwryan: controlla la risposta aggiornata come da requisito.