BASH: проанализировать переменную с помощью awk - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть переменная, которая содержит результат команды whereis ls:

ls: /bin/ls /usr/share/man/man1/ls.1.gz

Мне нужно найти эту переменную, извлечь эту указанную c часть и сохранить ее в новой переменная, newVar:

/bin

Я пытался echo $var | awk '{print $2}', но это захватывает /bin/ls

Затем мне нужно найти переменную $ PATH, чтобы найти подстроку / bin: (Я был думая, что мой newVar как-то совпадает) и каким-то образом удалите эту часть $ PATH и обновите $ PATH, чтобы отразить это изменение. Совершенно новый для bash сценариев и любая помощь будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 01 февраля 2020

Вы можете просто использовать dirname и which:

dirname "$(which ls)"
1 голос
/ 01 февраля 2020
$ echo "$var" | cut -d/ -f2
bin
1 голос
/ 01 февраля 2020

Вы можете использовать эту awk:

whereis ls | awk '{sub(/\/ls$/, "", $2); print $2}'

sub функциональные полосы, тянущиеся /ls из 2-го столбца whereis вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...