Недавно я настроил GNU stow на своих машинах для хранения пользовательских -обширных материалов, таких как библиотеки под ~/.local
, и столкнулся с проблемами при определении LD_LIBRARY_PATH
, CPATH
и LIBRARY_PATH
, нечаянно поставив там двоеточие и так разбивая вещи.
Затем я нашел ваш вопрос, и ответ был не совсем элегантным ; -), и я написал для этого небольшую функцию, ее можно найти здесь:https://gist.github.com/rico-chet/0229e4c080d9f51a02535dd25a656a8a
## Copyright (C) 2018 Alex Thiessen
## Copyright (C) 2018 https://unix.stackexchange.com/users/116858/kusalananda
## SPDX-License-Identifier: GPL-2.0-or-later
##
function join() {
if [ ${#} -eq 0 ]
then
echo "\`join\` appends elements separated by colons to a \`bash\` variable " >&2
echo "usage: join [element...]" >&2
return 1
fi
variable="${1}"
shift
export ${variable}="${!variable:+${!variable}:}$(IFS=:; echo "${*}")"
}
// отредактировано по предложению @Kusalananda
Использование awk:
awk -F '[][]' '{print $2}' /var/log/secure
-F '[][]'
иметь разделитель файлов в виде открывающих и закрывающих фигурных скобок $2
для подтверждения второго поля. Это немного неуклюже, но я надеюсь, что кто-нибудь выложит более короткую версию :Я использовал команду sed для замены символов «[» и «]» пустыми пробелами, а затем использовал команду awk для печати 6-го поля
# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491