Я бы использовал testdisk . (убедитесь, что вы не записываете на диск, пока не будете уверены ). Это поможет вам попробовать разные варианты доступа к диску, и в случае успеха позволит вам даже показать данные на диске (, которые также можно скопировать )на другой диск. После резервного копирования я бы попытался записать данные о геометрии диска, которые он находит, и попробовать, можете ли вы теперь получить доступ к диску на своем компьютере без тестового диска.
Будьте осторожны с этим инструментом, но в таких случаях он очень помогает.
awk 'BEGIN { FS=OFS="\t" } NR > 1 { $2 = sprintf("%d", $2) }; 1' file >file.new
Это будет читать ваши данные и записывать их в новый файл со всеми числами во втором столбце, преобразованными в целые числа (путем округления в меньшую сторону, недостающие данные будут преобразованы в нули ).
Если вам нужен вывод с плавающей запятой, например. с двумя десятичными знаками используйте %.2f
вместо %d
в качестве строки формата при вызове sprintf()
.
Вывод будет разделен табуляцией -.
После того, как вы осмотрели новый файл на глаз, просто mv
замените его старым файлом.
просто сделай:
gawk -i inplace -F'\t' 'NR>1{ $2*=1 }1' OFS='\t' infile
, однако -i inplace
не творит такой магии и создает временный файл, который затем заменяется после завершения процесса. так что вы также можете сделать
awk -F'\t' 'NR>1{ $2*=1 }1' OFS='\t' infile > newfile
Затем либо удалите исходный файл, либо переименуйте новый файл в исходный файл.
Можешь попробовать Миллер
mlr --csvlite --fs tab put '$val = is_empty($val) ? 0 : int($val)' file
Миллер предоставляет в -режиме места , если вы захотите попробовать его.