В принципе, поскольку данные могут быть считаны только после разблокировки диска, независимо от того, авторизован ли пользователь автоматически или нет, автоматический вход в систему -почти не повлияет на безопасность , так как пользователь уже прошел аутентификацию при загрузке.
Предполагается, что компьютер правильно выключен, пароль шифрования не разглашается, пароль достаточно длинный и т. д. Применяются передовые методы шифрования диска.
поступай так:
$ awk 'BEGIN{ FS=OFS="," } { $5=NR>1?$2+$3-$4:"net" }1' infile
name,income,reward,payment,net
Jackson,10000,2000,1000,11000
Paul,2500,700,200,3000
Louis,5000,100,1800,3300
или обновленный ожидаемый результат:
$ awk -F, 'NR>1{ print NR-1, $1, "net= " $2+$3-$4 }' ifnile
1 Jackson net= 11000
2 Paul net= 3000
3 Louis net= 3300
$ awk -F, -v OFS=, 'NR>1 { print $1, $2+$3-$4 }' data.csv
Jackson,11000
Paul,3000
Louis,3300
Или, если вы хотите, чтобы сеть была добавлена к существующим данным вместе с (обновленной строкой заголовка ):
$ awk -F, -v OFS=, 'NR==1 {print $0,"net"}; NR>1 {print $0, $2+$3-$4}' data.csv
name,income,reward,payment,net
Jackson,10000,2000,1000,11000
Paul,2500,700,200,3000
Louis,5000,100,1800,3300
Использованиеawk
:
awk -F',' '{ p[NR] = $1;net[NR] = $2+$3-$4} END {for (i=2;i<=NR;i++) print (i-1), p[i], "net = ", net[i]}' data.csv
Поскольку это файл csv
, FS = ','
или-F ','
Созданы следующие массивы p
и net
. Они проиндексированы по номерам записей NR ().
Затем цикл for (i-1), p[i], "net = ", net[i]
работает, как вы и планировали. for
Цикл запускается с 2, так как первая строка является строкой заголовка.
pipe
в данном случае бесполезно. Другое дело, что ваш цикл хорош, но ограничение должно быть NR
, а не NF
.