Si las columnas de entrada están separadas con un espacio en blanco simple (Espacio ASCII 0x20 y/o tabulador 0x09 )y ninguna columna en blanco, es tan simple como:
<infile column -t
c1 c2 c3 c4
ABC 0 1.0231321321213 92
BBBBB 12321.00002131 19912132. 0
CC 0.0999813221321 0 0
Sin embargo, column
no procesa Retorno de carro (ASCII 0x0d o \r
), Avance de formulario (ASCII 0x0c o\f
)o Tabulador vertical (ASCII 0x0b o\v
)como delimitadores.
Si las columnas se pueden separar con algún "espacio en blanco"([[:space:]]
similar a[ \t\r\f\v]
:espacio, tabulación horizontal, retorno de carro,desde el feed o la pestaña vertical (no la nueva línea )), deberá contraer (y convertir )todos los espacios en blanco en un solo espacio delimitador (de forma predeterminada ). No es posible utilizar el carácter de nueva línea como delimitador de línea y como delimitador de columna.
Excepto por el carácter de nueva línea, este trabajo:
<infile sed 's/[[:space:]]\+/ /g' | column -t
Es posible reducir los delimitadores de espacios en blanco dentro del rango […]
.
Si las columnas en el archivo fuente están separadas con un solo carácter (como tabulaciones ), es posible usar la expansión ANSI C del shell($'…'
)(si el shell en ejecución tiene tal capacidad )para declarar el carácter utilizado como delimitador.
Entonces, usandocolumn
:
<infile column -s $'\t' -t
El delimitador de salida para la columna siempre es un espacio.
Si es necesario aceptar varios delimitadores consecutivos (útil cuando hay una columna en blanco ), existe la opción (GNU )-n
que deshabilita la fusión de múltiples delimitadores adyacentes de entrada en un solo delimitador.
<infile column -s $'\t' -tn
si el archivo de origen no está separado con un solo carácter sino con múltiples caracteres, aún puede definirlos dentro de $'...'
sin el uso adicional de sed
para convertirlos en un solo carácter; como Espacio o Tabulaciones con:
<infile column -s $'\t ' -tn
Посмотрите на конфигурацию вашего ядра. Если ext4
собран как модуль, то он должен вывести CONFIG_EXT4_FS=m
и еще несколько строк:
$ grep 'CONFIG_EXT4_FS' /boot/config-$(uname -r)
CONFIG_EXT4_FS=m
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_EXT4_FS_ENCRYPTION=y
Убедитесь, что модуль присутствует в вашем образе initrd:
$ zcat /boot/initrd.img-$(uname -r) | cpio -t | grep ext4
lib/modules/4.9.0-4-amd64/kernel/fs/ext4
lib/modules/4.9.0-4-amd64/kernel/fs/ext4/ext4.ko
141243 blocks
В моем Debian Live 9.1 (загрузка с USB с syslinux и сохранением )путь к загруженному initrd немного отличается. Приведенный выше файл присутствует в образе squashfs. Просто чтобы убедиться, что это действительно один и тот же файл:
$ dmesg | grep initrd
[ 0.000000] Command line: BOOT_IMAGE=/live/vmlinuz_4_9.0_4_amd64 initrd=/live/initrd_img_4_9.0_4_amd64 boot=live persistence components
[ 0.000000] Kernel command line: BOOT_IMAGE=/live/vmlinuz_4_9.0_4_amd64 initrd=/live/initrd_img_4_9.0_4_amd64 boot=live persistence components
[ 0.870136] Freeing initrd memory: 22792K
Путь к initrd — /live/initrd_img_4_9.0_4_amd64
, а мои загрузочные файлы смонтированы на /lib/live/mount/persistence/sdb1
. Ваш путь, наверное, другой.
Оба пути объединены вместе:
$ zcat /lib/live/mount/persistence/sdb1/live/initrd_img_4_9.0_4_amd64 | cpio -t | grep ext4
lib/modules/4.9.0-4-amd64/kernel/fs/ext4
lib/modules/4.9.0-4-amd64/kernel/fs/ext4/ext4.ko
141243 blocks
$ diff /lib/live/mount/persistence/sdb1/live/initrd_img_4_9.0_4_amd64 /boot/initrd.img-$(uname -r)
Подтверждено, оба файла идентичны.
Тогда модуль должен был быть загружен:
$ lsmod|grep ext4
ext4 585728 1
crc16 16384 1 ext4
jbd2 106496 1 ext4
fscrypto 28672 1 ext4
mbcache 16384 2 ext4
$ cat /proc/filesystems | grep ext4
ext4