Как понять команду awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,++i)}}1' файла

Создавайте столько разделов, сколько хотите. Многие предлагают хранить /boot отдельно, главным образом потому, что у некоторых BIOS возникают проблемы с загрузкой, если загрузочные файлы находятся слишком далеко от начала диска. У вас может быть раздел swap, но файл тоже подойдет.

В рекомендуемом случае вы создадите три раздела:

  • Один, вероятно, отформатированный в Ext2 или FAT*, с точкой монтирования /boot
  • Один, вероятно, отформатированный в Ext4 или аналогичный, с точкой монтирования / и
  • Раздел подкачки, у которого нет точки монтирования

Если вы хотите отклониться от этой рекомендации и использовать только один раздел, вам нужен раздел с точкой монтирования /, корень файловой системы. Если вы выберете этот подход, то рекомендуется создать файл подкачки где-нибудь в этом разделе, чтобы система не рухнула, если вы используете всю свою память.

Однако любой каталог может быть отдельным разделом.Некоторые из них обычно выделяют:

  • /boot для вашего ядра и initrd — загрузочные файлы
  • /home для всех ваших собственных файлов
  • /var для чтения-записи файлов (на случай, если вы хотите сделать / только для чтения)
  • / для самой системы — программ, библиотек, конфигурации и т.д.
  • /usr иногда отличается от /, но содержит те же элементы

Если вы используете (U)EFI для загрузки вместо старого BIOS, вам, скорее всего, не понадобится отдельный /boot, но вы захотите смонтировать системный раздел EFI как /boot/efi. Однако вам не следует переформатировать этот раздел, так как он также содержит загрузочные файлы для любых других установленных операционных систем.

Обычно установщик предоставляет либо графическую утилиту для управления разделами, либо оболочку, из которой можно использовать fdisk. Однако вы должны быть осторожны, чтобы не изменить разделы Windows, и иметь резервную копию на всякий случай, поскольку вы изменяете расположение дисков.

В системе, из которой я печатаю, у меня есть

  • /boot из 200M
  • swap из 16G
  • / из 40G
  • /var of 40G
  • /home of 835G

Раздел /var намного больше, чем необходимо, и на самом деле хорошо вписался бы в свободное пространство /.

0
11.10.2018, 22:24
2 ответа

NF — это внутренняя переменная Awk, значение которой равно числу полей в текущей записи. Так

for(x=1;x<=NF;x++)

перебирает все поля. Число 1в конце выражения — это сокращенный способ печати всей записи с использованием действия по умолчанию, когда шаблон оценивается как «истина» :

.

In an awk rule, either the pattern or the action can be omitted, but not both. If the pattern is omitted, then the action is performed for every input line. If the action is omitted, the default action is to print all lines that match the pattern.1

Чтобы увеличить число с 0вместо 1, вы можете заменить префикс ++iпостфиксомi++:

awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,i++)}}1'

напр.

$ echo 'foo 0.00000123 bar' | awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,++i)}}1'
foo 1123 bar

тогда как

$ echo 'foo 0.00000123 bar' | awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,i++)}}1'
foo 0123 bar
$

  1. Руководство пользователя GNU Awk :1.3 Несколько простых примеров
4
28.01.2020, 02:23

Стоит упомянуть, что

sub(/0.00000/,i++)

заменит первое вхождение во всей строке ($0, значение по умолчанию ). Случайно это также произойдет в $x. Чтобы сделать его отказоустойчивым и использовать в будущем, замените его на

sub(/0.00000/,i++, $x)
0
28.01.2020, 02:23

Теги

Похожие вопросы