Все комментарии внутри текста
awk '
# make array with FEATURE elements from file "feature"
FNR==NR{f[$1]=1;next}
# collect to array all FEATUREs NAME by NAME
FNR>1{e[$1]=e[$1]" "$2}
# loop for each element in FEATURE array
END{for (i in f) {
# produce a head row with FEATURE elements
r[0]=r[0] i" "
# starts row counts for each FEATURE elements
c=0
# call all NAMEs
for (n in e)
# check if the FEATURE do not exist for the NAME
if(e[n] !~ i){
# produce next row number
++c
# construct apropriate row
if(c in r)
# if row exist add value to it
r[c]=r[c] " " n
else
# if not exist put apropriate spaces before value
r[c]=s n
# find maximum row number between all FEATUREs
if(c>l)
l=c
}
# make shift in row for next FEATURE
s=s" "
}
# prints row by row
for (k=0;k<=l;k++)
print r[k]
}' feature example | column -tn
Если вы знаете наличие символа : в вашем вводе, вы можете сделать что-то подобное.
echo " <j.2:Taxo_Version rdf:resource="refmat:taxonomies-8.2.0"/>" |
awk -F\: '{print $4}' | sed 's/..$//'
Команда awk
выводит на печать 4 th последовательностей после разделителя : , а команда sed
используется для удаления последних 2 символов для получения требуемых выходных данных.
Однако, если этот метод работает или нет, зависит от вашего ввода, как terdon точек в своих комментариях .
EDIT
Конечной трубы sed
вполне можно избежать, если использовать решение, предложенное jasonwryan в комментариях . Таким образом, команда будет эффективно перефразироваться как,
echo " <j.2:Taxo_Version rdf:resource="refmat:taxonomies-8.2.0"/>" |
awk -F: '{sub(/\/>/,""); print $4}'
Другое решение, только используя вырезание и rev, может быть обрамлено как,
echo " <j.2:Taxo_Version rdf:resource="refmat:taxonomies-8.2.0"/>" |
cut -d ':' -f4 | rev | cut -c 3- | rev
Снова указание разделителя зависит от входного файла и из примера вы предоставили символы, которые мне нужно извлечь происходят после 4 й позиции разделителя. Я использую вырезать
, чтобы извлечь подстроку после этого 4-го разделителя и использовать старый метод rev
, чтобы обратить строку и удалить последние 3 символа и снова применить rev
к ней, чтобы получить фактическую строку.
«команда rpm просто добавляет vlc rpm в yum repo»...
Закрыть. Я думаю, что пакет, установленный с помощью rpm
, добавляет репозиторий RPM Fusion , после чего yum
может устанавливать пакеты из этого репозитория. Очевидно, что первый пакет не может быть установлен через yum
, так как он отсутствует в репозиториях, настроенных для yum
. Поэтому его нужно было вручную загрузить и установить.
vlc
доступен в репозитории RPM Fusion (но не в официальных репозитариях для Fedora, я полагаю), поэтому, если вы не добавите этот репозиторий, yum list
не будет показывать ничего для vlc
.
$> su -
#> rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
#> yum install vlc
#> yum install mozilla-vlc (optional)
Объяснение
об/мин -ivh
Это действие устанавливает пакет, показывающий вращающуюся хэш-метку, до завершения установки. RPM не имеет проверки зависимостей. При использовании yum
пакет добавляется в репозиторий yum и выполняется повторная проверка зависимостей. Как указывает muru, не удается использовать yum list
, поскольку репозитарий не существует в списке репо. Это также является причиной использования полной ссылки при использовании rpm
.
«RPM команда просто добавляет RPM VLC к yum repo» ...
. Я думаю, что пакет, установленный с использованием RPM
, добавляет репозиторий RPM-репозиторий , после чего yum
может установить пакеты из этого репозитория. Очевидно, что сама первая упаковка не может быть установлена через yum
, поскольку он отсутствует в репозиториях, которые в настоящее время настроены для yum
. Так что это должно было быть загружено и установлено вручную.
VLC
доступно в репозитории RPM Fusion (но не в официальных репозиториях для Fedora, я полагаю), поэтому, если вы не добавите этот репозиторий, Список yum
не покажет ничего для VLC
.