Tengo esta línea, pero quiero que cada parte de ella se separe y quiero que esta separación se haga con awk.
El La línea original es la siguiente:
3302491505_8139829707_13970101.csv
y lo que quiero como salida es:
8139829707
o esto:
3302491505
Comentarios
Responder
Esto se puede hacer con cut:
$ cut -d_ -f2 <<< "3302491505_8139829707_13970101.csv" 8139829707
Respuesta
Prueba esto:
awk -F"[_.]" "{print $2; print $1}" <<< "3302491505_8139829707_13970101.csv"
-F
establece el separador de campo en _
o .
. Permite configurar los campos $1
y $2
.
Comentarios
- esto imprime la línea completa
Respuesta
Esto imprime todas las partes individualmente
$ awk -F"[_.]" "{print $1; print $2; print $3; print $4}" <<< "3302491505_8139829707_13970101.csv" 3302491505 8139829707 13970101 csv
Simplemente use el campo que desee.
$ awk -F"[_.]" "{ print $3;}" <<< "3302491505_8139829707_13970101.csv" 13970101
Respuesta
echo -n "3302491505_8139829707_13970101.csv" | awk -F"[._]" "{print $1}"
Esto se separa por _
o .
y luego imprima el campo que necesite Simplemente imprima
-
$1
para el primer campo: 3302491505 -
$2
para el segundo campo: 8139829707 -
$3
para el tercer campo: 13970101
Respuesta
Los shells tipo Bourne tienen una forma incorporada de dividir cadenas. Eso es lo que sucede cuando dejas una expansión de parámetros sin comillas y la fuente de tantos errores cuando no quieres que eso suceda.
Por lo tanto, parecería justo usarlo cuando realmente es necesario.
IFS=_ # split on _ set -o noglob # leaving a parameter expansion unquoted also # involves filename generation which we don"t want here var=3302491505_8139829707_13970101.csv set -- $var # $var unquoted means its split printf "%s: %s\n" First "$1" Second "$2" Third "$3"
Algunas shells tienen formas menos engorrosas de dividir cadenas.
En zsh
:
var=3302491505_8139829707_13970101.csv non_empty_parts=(${(s:_:)var}) parts=("${(@s:_:)var}")
O directamente:
printf "%s\n" "Second part: ${${(s:_:)var}[2]}"
awk -F_ '{for(i=1;i<=NF;i++) print $i+0}' <<<"3302491505_8139829707_13970101.csv"
?_
como separador de campo? Haz un esfuerzo