См. также:
sudo ethtool -P eth0
Так, для задержки MAC-адреса к его значению по умолчанию (принятие GNU grep здесь):
set_to_real() (
for i do
mac=$(ethtool -P "$i" | grep -iEom1 '([0-9a-f]{2}:){5}[0-9a-f]{2}') &&
ip link set dev "$i" address "$mac"
done
)
set_real eth0
Давайте сломаем это. 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
file2 имеет 0,45 добавленных к каждому значению первого столбца (x'es), столбец 2 и 3 копируются, как, что-либо еще на строке проигнорировано.
awk читает каждую строку file1 и запускает скрипт между {}
Скрипт запущен на каждой строке, белый расположил delimitered поля с интервалами, присвоены позиционным параметрам 1$, $2$ 3...
Параметры печатаются кроме 1$, добавляется с 0,45