И увидел, что выравнивания всё равно нет.
Обнаружил, что эта программа неправильно преобразует табуляции в пробелы. То есть вычисляет сколько надо вставить пробелов, считая текущую позицию не в знаках, а в байтах.
Пришлось даже воспользоваться преобразованием через cp1251:
iconv -t cp1251 FILE_WITH_TAB | expand -t 20 | iconv -f cp1251 >FILE_WO_TAB
Но, так как у нас есть ещё и компьютер с RHEL, решил проверить программу оттуда.
И оказалось, что она преобразует правильно. Скопировал её на свой компьютер (у меня Debian 9)
Код: Выделить всё
mik13@mik13:/run/shm$ echo -e "asd\tasdf\nфыв\tasd" | expand
asd asdf
фыв asd
mik13@mik13:/run/shm$ echo -e "asd\tasdf\nфыв\tasd" | ./expand
asd asdf
фыв asd
Версия в Stretch более новая:
Код: Выделить всё
mik13@mik13:/run/shm$ expand --version
expand (GNU coreutils) 8.26
Copyright (C) 2016 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете изменять и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.
Автор программы -- David MacKenzie.
mik13@mik13:/run/shm$ ./expand --version
expand (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете изменять и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.
Автор программы -- David MacKenzie.
Взял программу версии 8.30 -- то же самое.