Давайте сломаем это. awk '{foo}' file
применит выражение foo
к каждой строке file
и распечатайте результат к терминалу (стандартный вывод). awk
разделяет его входные строки на пробеле (по умолчанию) и сохраняет каждое поле как $1
, $2
и т.д.
Так, фактическое выражение Вы выполняете средства: считайте каждую входную строку, добавьте 0.45 к значению первого поля и затем распечатайте то поле, а также второе и третье. Это наиболее легко объяснено с простым примером:
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt
10.45 20 30
50.45 60 70
Так, как Вы видите, awk
сценарий добавил 0.45 к первому полю каждой строки и затем распечатал его наряду со вторым и третьим. Четвертое было проигнорировано, так как Вы не сказали этому печатать $4
.
Следующий бит не имеет никакого отношения awk
, >
символ для перенаправления вывода и используется оболочкой (удар или zsh или независимо от того, что Вы используете). В целом command > file
сохранит вывод command
в файле file
перезапись содержания файла, если это существует и создание его, если это не делает.
Соединение всего:
$ ls
file.txt
$ cat file.txt
10 20 30 40
50 60 70 80
$ awk '{print $1+0.45 " " $2 " " $3 }' file.txt > file2.txt
$ ls
file2.txt file.txt
$ cat file2.txt
10.45 20 30
50.45 60 70
Как пользователь root, и поскольку Fedora 20 использует systemd
, более подходящий способ сделать это - использовать целевой объект hibernate
:
systemctl hibernate
Если вы хотите сделать это как обычный пользователь, вы можете использовать sudo и добавить следующую строку в / etc / sudoers
с помощью команды visudo
:
user hostname =NOPASSWD: /usr/bin/systemctl hibernate
Другое решение, позволяющее спящий режим с нормальный пользователь должен немного подумать с PolKit .
Чтобы работать без дополнительных проблем, я предлагаю вам иметь как минимум такой же размер свопа , который у вас есть в ОЗУ (см. гибернация - Fedora использует тот же метод).