Вы не можете этого сделать, потому что для такого преобразования вам необходимо знать значение двоичного содержимого.
Если, например, внутри двоичного файла есть строка, которую нельзя преобразовывать, и 4-байтовое целое число может нуждаться в другом обращении, чем двухбайтовое целое число.
Другими словами, для преобразования порядка байтов необходимо описание типа данных.
Esto podría hacerse con corte:
$ cut -d_ -f2 <<< "3302491505_8139829707_13970101.csv"
8139829707
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
.
echo -n "3302491505_8139829707_13970101.csv" | awk -F'[._]' '{print $1}'
Esto se separa por _
o .
y luego imprime el campo que necesite Solo imprime
$1
para el primer campo :3302491505 $2
para el segundo campo :8139829707 $3
para el tercer campo :13970101 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
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]}"