Mam plik str.txt
z następującymi przykładowymi rekordami.
31,2713810299,1,11-Aug-15 19:52:10 32,2713810833,1,11-Aug-15 21:36:18
Teraz chcę wydrukować wynik z awk, jak poniżej.
cat str.txt|awk -F, "{print substr("$4",1,9)}" -
Wynik powinien być :
"11-Aug-15" "11-Aug-15"
Odpowiedź
pojedynczy cudzysłów to \x27
awk -F, "{print "\x27"substr($4,1,9)"\x27" }"
Komentarze
- Użyj ósemkowego
\047
dla'
, a nie szesnastkowego\x27
. Zobacz awk.freeshell.org/PrintASingleQuote . - \ x22 dla podwójnego cudzysłowu (w razie potrzeby)
Odpowiedź
POSIXly:
awk -F"[ ,]" -v q=""" "{print q$4q}" <file
Odpowiedź
Nieco inne podejście, dla POSIX Awk:
awk -F"[, ]" "{printf "\047%s\047\n", $4}" file "11-Aug-15" "11-Aug-15"
Odpowiedź
Możesz użyć polecenia awk
w ten sposób:
cat str.txt|awk -F, "{print substr($4,1,9)}" -
Aby uzyskać następujące dane wyjściowe:
11-Aug-15 11-Aug-15
Jeśli pojedyncze cudzysłowy wymagają na początku i na końcu linii, to:
cat str.txt|awk -F, "{printf "\047%s\047\n",substr($4,1,9)}" -
Aby uzyskać następujące wyniki:
"11-Aug-15" "11-Aug-15"
Komentarze
- Żaden drukowane są cudzysłowy, które określa pytanie …
- @jasonwryan: Sprawdź odpowiedź zaktualizowaną zgodnie z wymaganiami.