Я соглашаюсь, что awk является лучшим решением. Можно сделать это только в ударе с несколькими другими инструментами:
cut -d , -f 2,6,7,8 filename | {
read header
tr , $'\t' <<< "$header"
while IFS=, read -r id num4 num5 num6; do
# bash can only do integer arithmetic
if [[ $(bc <<< "$num4 >= 4.0") = 1 ]]; then
printf "%s\t%s\t%s\t%s\n" "$id" "$num4" "$num5" "$num6"
fi
done
}
Первой вещью, которая переходит для возражения, являются "файлы с дырами". Если программа открывает файл и использует lseek()
системный вызов для установки файлового смещения на больший, чем один блок файловой системы, затем пишет некоторые байты, код файловой системы только выделяет блок для данных, которые были записаны. Первый блок файловой системы не становится выделенным. Если другая программа открывает файл и читает некоторые байты в том блоке файловой системы, это получает байты нулевого значения.
Программа может пропустить блок где угодно в файле, не просто вначале. Таким образом, "файлы с дырами".
Наличие резервного взрыва в размере весьма характерно для linux/unix, но преступник обычно - что-то как файл базы данных. Я знаю, что много приложений для Android использует Sqlite3, возможно, это - причина.
data.img
изображение файловой системы, содержащей редкие файлы (как базы данных SQlite3), что относительно того, чтобы копировать его сdd
заставляет те дыры поднять различные суммы пространства на различных блочных устройствах? Почему это занимает так много места после копии? Если те дыры присутствуют в.img
файл, почему они не поднимают столько же пространства перед копией блочного уровня? – Andrew 03.02.2014, 19:49data.img
самостоятельно редкий файл. Вы не упоминаете, куда это прибыло из. – cjm 03.02.2014, 20:16make_ext4fs
в системном каталоге. Кажется, что я должен буду сделать некоторое рытье в это util, чтобы видеть, может ли быть настроен. – Andrew 03.02.2014, 20:28dd
не делает копии блочного уровня. Это делает копию уровня байта. (Нет никакого стандартного инструмента, который делает копию блочного уровня.) Использованиеcp --sparse=always
сделать редкую копию. – Gilles 'SO- stop being evil' 04.02.2014, 01:27