Из справочной страницы systemd -journald :
The journal service stores log data either persistently below /var/log/journal or in a volatile way below /run/log/journal/ (in the latter case it is lost at reboot). By default, log data is stored persistently if /var/log/journal/ exists during boot, with an implicit fallback to volatile storage otherwise. Use Storage= in journald.conf(5) to configure where log data is placed, independently of the existence of /var/log/journal/.
Таким образом, журнал можно и безопасно хранить в другом месте. Вам останется только добавить/изменить
Storage=/some-filesystem-with-free-space/some-dir/
Попробуйте:
$ awk -F, 'FNR==NR{a[$1]=$2;next} $1 in a{$3=a[$1]} 1' OFS=, file2.csv file1.csv
alice,soccer,5
bob,baseball,21
jessica,swimming,9
mike,running,20
-F,
Это устанавливает запятую в качестве разделителя полей ввода.
FNR==NR{a[$1]=$2;next}
При чтении file2.csv
это сохраняет второе поле под ключом первого поля в массиве a
.
Обратите внимание на использование next
. Это говорит awk пропустить остальные команды и начать заново со следующей строки.
Например, после прочтения вашего file2.csv
содержимое массива a
равно:a['alice']=5
и a['jessica']=9
.
$1 in a{$3=a[$1]}
При чтении file1.csv
, если первое поле существует как ключ в массиве a
, то это обновляет третье поле до значения, сохраненного в a
.
Тест $1 in a
верен, если содержимое $1
(, которое мы читаем из file1.csv
), является одним из ключей (, а не одним из значений )массива a
.
1
Это сокращение от {print}
.
OFS=,
Это устанавливает запятую в качестве разделителя выходных полей.