исключить имя пути к файлу и значения grep в текстовом файле

Вероятно, лучше всего отправить запрос в службу поддержки с предоставленным хостингом. Они могли сделать все возможное, чтобы ваша среда отличалась от стандартной среды Red Hat. Тем не менее, вот некоторые вещи, которые вы могли бы попробовать.

Возможно, каталог yumне является вашим PATH. Поскольку yumпредназначен для использования системным администратором, может иметь смысл указать его в пути для пользователя root, а не для обычного пользователя. Итак, первое, что нужно попробовать, это запустить yumот имени пользователя root, например.:

sudo yum

Если это не сработает, попробуйте перечислить каталоги в вашемPATH:

(IFS=:; for d in ${PATH}; do echo $d; done)

Для обычного пользователя я получаю что-то вроде этого:

/usr/local/bin
/bin
/usr/bin
/usr/local/sbin
/usr/sbin
/home/username/.local/bin
/home/username/bin

А также для rootпути пользователя:

sudo bash -c 'IFS=:; for d in ${PATH}; do echo $d; done'

А вот что я получаю для своего пользователя root:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

Вы можете сравнить свой вывод с ними, чтобы увидеть, отсутствуют ли какие-либо каталоги.

Существует также несколько команд, которые можно использовать для поиска в файловой -системе. Если у вас установлен locate, вы можете использовать этот:

updatedb
locate yum

В противном случае, и если файловая -система не слишком велика, вы могли бы использовать findи ничего не делать, (это, вероятно, излишне):

sudo find / -name yum

То же самое относится и к команде rpm.

Вот пути для моих команд yumи rpm:

user@host:~$ type -a yum
yum is /bin/yum
yum is /usr/bin/yum

user@host:~$ type -a rpm
rpm is /bin/rpm
rpm is /usr/bin/rpm

Если ничего из этого не выявит, то вполне вероятно, что ваш хостинг-провайдер просто не установил его.

Вот связанная ссылка, которую вы можете просмотреть:

-bash :yum :команда не найдена

0
02.01.2020, 13:45
2 ответа

Можно попробовать задействовать второй grepвот так:

grep -irn "404" /var/log/httpd/www.abc.com.access_log|grep -v ema8ketpl4ace9dmin  > abc-404.txt
0
28.01.2020, 02:58

Я не уверен, почему вы используете опцию -r(по крайней мере в вашем первом примере ), так как вы применяете вызов grepтолько к одному файлу.

Для решения второй проблемы я бы предложил использовать awkвместоgrep:

awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/ {print}' /var/log/httpd/www.abc.com.access_log > abc-404.txt

Это даст команду awkнапечатать все строки, в которых встречается выражение "404", но не(!~)выражение "ema8ketpl4ace9dmin".

Обратите внимание, что «печать» — это стандартное действие для любой строки, к которой применяются правила, поэтому вы можете опустить его и просто сказать

awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/' /var/log/httpd/www.abc.com.access_log > abc-404.txt
0
28.01.2020, 02:58

Теги

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