Jeg har en fil str.txt
med følgende eksempler på poster.
31,2713810299,1,11-Aug-15 19:52:10 32,2713810833,1,11-Aug-15 21:36:18
Nå vil jeg skrive ut output med awk som nedenfor.
cat str.txt|awk -F, "{print substr("$4",1,9)}" -
Utgangen skal være :
"11-Aug-15" "11-Aug-15"
Svar
et enkelt tilbud vil være \x27
awk -F, "{print "\x27"substr($4,1,9)"\x27" }"
Kommentarer
- Bruk oktalt
\047
for'
, ikke hex\x27
. Se awk.freeshell.org/PrintASingleQuote . - \ x22 for dobbelt tilbud (i tilfelle du trenger det)
Svar
POSIXly:
awk -F"[ ,]" -v q=""" "{print q$4q}" <file
Svar
En litt annen tilnærming, for POSIX Awk:
awk -F"[, ]" "{printf "\047%s\047\n", $4}" file "11-Aug-15" "11-Aug-15"
Svar
Du kan bruke awk
kommando slik:
cat str.txt|awk -F, "{print substr($4,1,9)}" -
For å få følgende utdata:
11-Aug-15 11-Aug-15
Hvis enkelt anførselstegn krever i begynnelsen og slutten av linjene, så:
cat str.txt|awk -F, "{printf "\047%s\047\n",substr($4,1,9)}" -
For å få følgende utdata:
"11-Aug-15" "11-Aug-15"
Kommentarer
- Ingen enkelt sitater skrives ut, som spørsmålet spesifiserer …
- @jasonwryan: Sjekk svaret oppdatert etter krav.