Как объединить общие наборы данных между двумя файлами

Я попробовал вашу команду, и мне кажется, что она работает, просто найдите.

sudo -i -u user1 sh -c 'source ~/.bashrc && printenv > /tmp/user.env'

Я использовал команду source вместо.

С ~/.bashrc, содержащим:

[ws] root ~ >cat /home/user1/.bashrc 
#.bashrc
...
export TESTENV="test"
...

выполните вашу команду и отобразите содержимое/tmp/user.env:

[ws] root ~ >sudo -i -u user1 sh -c 'source ~/.bashrc && printenv > /tmp/user.env'

[ws] root ~ >cat /tmp/user.env 
...
SHELL=/bin/bash
USER=user1
SUDO_COMMAND=/bin/bash -c sh -c source\ ~/.bashrc\ &&\ printenv\ >\ 
...
TESTENV=test
...
[ws] root ~ >

2
19.02.2020, 04:35
2 ответа

Вы можете использовать awkдля этой цели:

awk 'NR==FNR {missing[$1]=$2} NR>FNR {printf("%s %s\n",$1,missing[$1]);}' file2.txt file1.txt > file3.txt

Это обработает сначала file2.txt, а затем file1.txt.

  • При обработке file2.txt(, обозначенной FNR, номер -строки файла -, равный NR, глобальный номер обработанной строки -), мы читаем «год -пропущенные дни" -объединение в массив missing.

  • При обработке file1.txtмы печатаем год и количество пропущенных дней, найденные в массивеmissing(или пустую строку, если она отсутствует ).

Вывод будет передан в файл file3.txt.

2
28.04.2021, 23:23

Думаю, вы могли бы использовать awkдля сбора данных из второго файла и хеширования значений из первого файла

awk 'FNR == NR { map[$1] = $2; next } ($1 in map) { $2 = map[$1] }1' file2 file1
2
28.04.2021, 23:23

Теги

Похожие вопросы