Используйте правильный инструмент парсера csv:
csvtool -t '|' -u ',' cat infile > outputfile
var1,var2,var3
"Potter, Harry",2,3
csvtool --help
:-t Input separator char. Use -t TAB for tab separated input.
-u Output separator char. Use -u TAB for tab separated output.
cat
This concatenates the input files together and writes them to
the output. You can use this to change the separator character.
В моем случае (, и вы помогли мне в ПМ, сказав мне то же самое ), что это была проблема с -монтированием. У меня были некоторые данные в каталоге на разделе, которые du
не мог видеть, потому что их скрыло монтирование.
Поэтому попробуйте размонтировать все монтирования и поискать данные в оставшихся каталогах.
Хорошего времени и спасибо!
Возможно, у вас есть приложение/процесс, в котором открыт этот файл. Когда вы удаляете файл, открытый приложением, ОС по-прежнему видит размер файла в df, поскольку файл все еще открыт в памяти.
Вот некоторая документация, которую я написал для коллеги, и она должна предоставить вам то, что вам нужно.
Усекать большие открытые файлы
Вы удалили файлы, чтобы освободить место, но после этого место не освободилось. Теперь df -lah и du -lah показывают разные размеры
Используйте LSOF для получения удаленных, но удерживаемых файлов
lsof |grep deleted
Здесь будут показаны все файлы, удаленные, но открытые приложением.
java 2943 gateway 410w REG 253,3 50482102 139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java 2943 gateway 411w REG 253,3 46217973 139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java 2943 gateway 412w REG 253,3 50483894 139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)
Вы можете либо перезапустить приложение, чтобы разблокировать файлы, либо обрезать файлы.
Чтобы обрезать файлы, вам нужно будет посмотреть на вывод выше, чтобы получить PID и номер файлового дескриптора fd ().
обрезать файл с помощью
echo > /proc/PID/fd/fd_number
Пример :Чтобы обнулить размер файла из трех перечисленных выше, вы должны выполнить следующее
echo > /proc/2943/fd/410
echo > /proc/2943/fd/411
echo > /proc/2943/fd/412
если у вас есть много, чтобы урезать bash на помощь.
for n in {410..412}; do 'echo > /proc/2943/fd/$n'; done;
df -lah теперь должно показывать свободное место НО файлы будут отображаться в lsof |grep, удаленные, но будут иметь размер 1
java 2943 gateway 410w REG 253,3 1 139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java 2943 gateway 411w REG 253,3 1 139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java 2943 gateway 412w REG 253,3 1 139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)
Дескрипторы файлов будут освобождены при следующей перезагрузке или перезапуске/перезагрузке приложения, открывшего файлы.
Конечно, вам придется настроить свои команды так, чтобы они соответствовали выходным данным ваших заблокированных файлов.