Mám soubor str.txt
s následujícími ukázkovými záznamy.
31,2713810299,1,11-Aug-15 19:52:10 32,2713810833,1,11-Aug-15 21:36:18
Nyní chci tisknout výstup s awk, jak je uvedeno níže.
cat str.txt|awk -F, "{print substr("$4",1,9)}" -
Výstup by měl být :
"11-Aug-15" "11-Aug-15"
Odpověď
jedna nabídka by byla \x27
awk -F, "{print "\x27"substr($4,1,9)"\x27" }"
Komentáře
- Použít osmičkové
\047
pro'
, ne hex\x27
. Dvojité uvozovky (pro případ, že byste je potřebovali) najdete v awk.freeshell.org/PrintASingleQuote . - \ x22
Odpověď
POSIXně:
awk -F"[ ,]" -v q=""" "{print q$4q}" <file
Odpověď
Trochu odlišný přístup pro POSIX Awk:
awk -F"[, ]" "{printf "\047%s\047\n", $4}" file "11-Aug-15" "11-Aug-15"
Odpověď
Můžete použít příkaz awk
takto:
cat str.txt|awk -F, "{print substr($4,1,9)}" -
Získat následující výstup:
11-Aug-15 11-Aug-15
Pokud na začátku a na konci řádků vyžadují jednoduché uvozovky:
cat str.txt|awk -F, "{printf "\047%s\047\n",substr($4,1,9)}" -
Získání následujícího výstupu:
"11-Aug-15" "11-Aug-15"
Komentáře
- Žádný singl jsou vytištěny uvozovky, které určuje otázka …
- @jasonwryan: Zkontrolujte odpověď aktualizovanou podle požadavku.