Как я могу разделить строку, содержащую подчеркивание, с помощью awk?

Вы не можете этого сделать, потому что для такого преобразования вам необходимо знать значение двоичного содержимого.

Если, например, внутри двоичного файла есть строка, которую нельзя преобразовывать, и 4-байтовое целое число может нуждаться в другом обращении, чем двухбайтовое целое число.

Другими словами, для преобразования порядка байтов необходимо описание типа данных.

0
25.05.2018, 11:21
5 ответов

Esto podría hacerse con corte:

$ cut -d_ -f2 <<< "3302491505_8139829707_13970101.csv" 
8139829707
0
28.01.2020, 04:22

Prueba esto:

awk -F'[_.]' '{print $2; print $1}'  <<< "3302491505_8139829707_13970101.csv" 

-Festablece el separador de campo en _o .. Permite configurar los campos $1y $2.

0
28.01.2020, 04:22
echo -n "3302491505_8139829707_13970101.csv" | awk -F'[._]' '{print $1}'

Esto se separa por _o .y luego imprime el campo que necesite Solo imprime

  • $1para el primer campo :3302491505
  • $2para el segundo campo :8139829707
  • $3para el tercer campo :13970101
0
28.01.2020, 04:22

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
0
28.01.2020, 04:22

Bourne -como shells tienen un -incorporado en forma 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.

Así que parece justo usarlo cuando realmente se necesita.

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"

Algunos shells tienen formas menos engorrosas de dividir cadenas.

Enzsh:

var=3302491505_8139829707_13970101.csv
non_empty_parts=(${(s:_:)var})
parts=("${(@s:_:)var}")

O directamente:

printf '%s\n' "Second part: ${${(s:_:)var}[2]}"
0
28.01.2020, 04:22

Теги

Похожие вопросы