Использование GNUjoin
с расширенными данными и первым выходным форматом , плюс echo
и tail
для замены заголовка, (, потому что join
путается несогласованные заголовки):
echo A,B,C,D,E
join -t ',' --header --nocheck-order test1 test2 \
-a 1 -e NA -1 3 -2 1 -o 1.1,1.2,2.2,1.3,1.4 | tail -n +2
Выход:
A,B,C,D,E
1,1990,2.3 GHz,I001,2473264
2,1991,2.3 GHz,I002,2473265
3,1992,2.3 GHz,I004,2473266
4,1993,1.8 GHz,6050,912432
5,1994,850 MHz,6003,912433
6,1995,NA,6004,21234
Я не большой поклонник nohup (Вместо этого я использую disown ), но если вы поставите «nohup» перед каждой командой в сценарии оболочки, это выполнит часть nohup вашего вопроса.
Однако я думаю, что ваши файлы являются программами SAS? Если вы хотите, чтобы SAS работал параллельно в каждой программе SAS:
nohup sas test1_2.sas &
nohup sas test3_4.sas &
etc.
Это будет запускать независимые команды SAS, каждая со своей собственной программой SAS.
Продолжая работу с командой nohup, если они производят вывод, все они будут одновременно записывать в nohup.out. Чтобы предотвратить это, записывайте выходные данные и сообщения об ошибках в отдельный файл для каждой команды :
.nohup sas test1_2.sas > output1_2.file 2>&1 &
nohup sas test3_4.sas > output3_4.file 2>&1 &
etc.
Добавлен код из комментариев:
Чтобы вызвать команду test.sh,
bash test.sh
(где «bash» — ваш любимый шелл )или отметьте его как исполняемый:
chmod +x test.sh
Поскольку вы новичок, убедитесь и нажмите на галочку, если считаете, что это правильный ответ на ваш вопрос.