Один способ использовать awk:
$ awk 'NR==FNR{a[$2]=$1 FS $3;next}{print $0 FS a[$2] }' file2 file1
873 1.1.1.1 test7 p10
1033 99.99.99.10 test2 p9
1108 78.2.204.174 test8 p4
1257 78.2.8.181 test1 p6
Файл f2 загружается в массив, где 2-е поле является индексом, и значение массива является комбинацией 3-х и 4-х полей file2. Когда file1 обрабатывается, вся строка наряду с хранимой суммой в массиве печатается.
Необходимо установить полномочия сценария на исполняемый файл:
chmod +x ./foo # or sudo chmod +x ./foo
./foo
Это кажется, что нечто не является исполняемым файлом. Можно зафиксировать это путем выполнения chmod +x foo
, затем ./foo
или sudo ./foo
Альтернатива созданию его исполняемый файл должна была бы передать его sh
как аргумент. Можно выполнить его этот путь путем ввода sh ./foo
или sudo sh ./foo
.
Проверьте исполняемый бит файла. Например,
$ ls -l might return
-rw-rw-r-- 1 hacker hacker 28 Jan 17 11:32 foo
$ chmod 775 foo
Изменение как подходящее для пользователя Вы хотите смочь выполнить сценарий.
Смотрите на биты полномочий для файлов ./foo
и ./bar
. В первом случае ./foo
вероятно или не исполняемый вообще или не исполняемый файл для пользователя root. Когда Вы работаете sudo
Вы являетесь обычно подъемными свои полномочия так, чтобы Вы были пользователем root.
Если Вы - полномочия, установлены как это на файле ./foo
это не выполнится для userX.
$ ls -l
-rw-rw-r-- 1 userX groupX 14 Jan 17 11:32 foo
Если они будут похожи на это, то это выполнится для userX.
$ chmod u+x foo
$ ls -l
-rwxrw-r-- 1 userX groupX 14 Jan 17 11:32 foo
Однако корневой все еще не сможет выполнить его, так как 3 группировки полномочий (rwxrw-r-) не позволяют другим пользователям выполняться ./foo
. Можно или включить просто, что группировка или можно дать всем разрешения выполнения.
$ chmod o+x foo # -rwxrw-r-x # just other users
$ chmod g+x foo # -rwxrwxr-- # allows users in group groupX
$ chmod +x foo # -rwxrwxr-x # allows everyone
Заметьте в вышеупомянутом, которое мы включаем x
бит для различных групп битов (пользователь, группа, другой).
Этот файл не существует, и таким образом пытаясь выполнить что-то, что не существует, даст Вам сообщение, которое Вы видели.
$ sudo ./bar
sudo: ./bar: command not found
Или просто обычный пользователь:
$ ./bar
-bash: ./bar: No such file or directory