Обратите внимание, что символ $
имеет разные эффекты и значения для оболочки (, например. bash )и для awk
.
В оболочке ${name}
вводится расширение переменной, и когда эта переменная является целым числом, доступ к переменной представляет собой список аргументов оболочки . В оболочке (bash )самым большим аргументом (без{…}
)является $9
, но с {…}
нет (установленного )предела, пока новые запросы памяти предоставляется.
В awk
$
является оператором доступа к полям строки ввода. Существует жесткое ограничение в 32767 возможных полей в mawk :
$ echo $(seq 80000) | mawk '{print $(32767+2)}'
mawk: program limit exceeded: maximum number of fields size=32767
Но не в GNU awk:
$ echo $(seq 80000) | awk '{print $(32767+2)}'
32769
В awk
оператор$
мог повторяться (как !
(, а некоторые другие )могли):
$ awk 'BEGIN{var=111;print( !!!!!!var )}'
1
$ echo 23 {a..z} | awk '{field=1;print( $$field )}'
v
Это ближе к тому, что вам нужно?
awk 'NR == FNR {a[$1 FS $2] = $3; next}
$$indexa FS $$indexb in a {$$indexa = a[$$indexa FS $$indexb]}
' filea indexa=16 indexb=25 fileb
/proc/uptime
указывает время безотказной работы в сотых долях секунды.
Если вам нужны более точные значения, вы можете написать модуль ядра на основе реализации /proc/uptime
.