Eu tenho esta linha, mas quero cada parte dela separada e quero que essa separação seja feita com o awk.
O a linha original é a seguinte:
3302491505_8139829707_13970101.csv
e o que desejo como saída é:
8139829707
ou este:
3302491505
Comentários
Resposta
Isso pode ser feito com cut:
$ cut -d_ -f2 <<< "3302491505_8139829707_13970101.csv" 8139829707
Resposta
Tente isto:
awk -F"[_.]" "{print $2; print $1}" <<< "3302491505_8139829707_13970101.csv"
-F
define o separador de campo para _
ou .
. Permite definir os campos $1
e $2
.
Comentários
- isso imprime toda a linha
Resposta
Isso imprime todas as partes individualmente
$ awk -F"[_.]" "{print $1; print $2; print $3; print $4}" <<< "3302491505_8139829707_13970101.csv" 3302491505 8139829707 13970101 csv
Basta usar o campo que você deseja.
$ awk -F"[_.]" "{ print $3;}" <<< "3302491505_8139829707_13970101.csv" 13970101
Resposta
echo -n "3302491505_8139829707_13970101.csv" | awk -F"[._]" "{print $1}"
ISSO é separado por _
ou .
e, em seguida, imprima o campo necessário Basta imprimir
-
$1
para o primeiro campo: 3302491505 -
$2
para o 2º campo: 8139829707 -
$3
para o 3º campo: 13970101
Resposta
Os shells do tipo Bourne possuem uma maneira integrada de dividir strings. Isso é o que acontece quando você deixa uma expansão de parâmetro sem citação e a fonte de tantos bugs quando você não quer que isso aconteça.
Portanto, seria justo usá-la quando na verdade necessário.
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"
Alguns shells têm maneiras menos complicadas de dividir strings.
Em zsh
:
var=3302491505_8139829707_13970101.csv non_empty_parts=(${(s:_:)var}) parts=("${(@s:_:)var}")
Ou diretamente:
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? Faça algum esforço