Если ваш файл уже отсортирован, как насчет:
uniq --skip-field=1 file
в противном случае вы можете сначала отсортировать свой файл, а затем использовать uniq
:
sort -k2 file | uniq --skip-field=1
Вывод:
file_35.txt 8208ad321576b521b23b07b9ba598e5c43b03ec4172c96fdbd35a858ec205ae6
file_32.txt aaf6b8c4a95d0e8f191784943ba1ea5c0b4d4baab733efe8ceb8b35478b6afd2
Поиграв с ним еще и увидев некоторые комментарии о необходимости явно указывать переменные среды, поскольку мы находимся внутри ядра, я изменил свой модуль ядра, чтобы он выглядел так, и теперь открывается браузер. с call_usermodehelper ()
int rc;
static char *envp[] = {
"SHELL=/bin/bash",
"HOME=/home/admin",
"USER=admin",
"PATH=/home/admin/bin:/home/admin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/admin",
"DISPLAY=:0",
"PWD=/home/admin",
NULL};
char *argv[] = {"/home/admin/mySample", NULL};
rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
printk("RC is: %i \n", rc);
Пример программы теперь выглядит так:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main()
{
char *arg[] = {"firefox", "/home/admin/sample.html", NULL};
execvp(arg[0], arg);
return 0;
}