вы можете удалить оба экземпляра:
rpm -e --justdb --nodeps --allmatches gvfs-fuse-1.40.0-1.1.x86_64
, а затем переустановите одиночный пакет (, который вам потребуется загрузить в этом случае):
rpm -i --justdb --nodeps gvfs-fuse-1.40.0-1.1.x86_64.rpm
или если вы не возражаете против переустановки файлов (и повторного выполнения пре-/пост-скриптов):
yum/zypper install gvfs-fuse-1.40.0-1.1
$ cat file
>hCoV-19/xxx/xxx-YYY/xxx
>hCoV-19/xxx/xxx-ZZZ/xxx
$ awk -F '[/-]' '{ printf "%s %s\n", $5, $0 }' file
YYY >hCoV-19/xxx/xxx-YYY/xxx
ZZZ >hCoV-19/xxx/xxx-ZZZ/xxx
Приведенный выше код awk
обрабатывает данные как строки, разделенные на поля либо /
, либо -
. Пятое такое поле — это поле, которое вы хотите добавить в начало каждой строки, что и делает оператор printf
.
Если -
не является хорошим разделителем (, это было бы не так, если бы строка перед первой косой чертой иногда не содержала тире, например ), тогда используйте только /
в качестве разделителя. разделитель,разделить третью косую черту -поле с разделителями на -
и добавить второй бит результата в строку:
$ awk -F / '{ split($3,a,"-"); printf "%s %s\n", a[2], $0 }' file
YYY >hCoV-19/xxx/xxx-YYY/xxx
ZZZ >hCoV-19/xxx/xxx-ZZZ/xxx
Использованиеsed
:
$ sed 's/.*-\([^/]*\).*/\1 &/' file
YYY >hCoV-19/xxx/xxx-YYY/xxx
ZZZ >hCoV-19/xxx/xxx-ZZZ/xxx
или, если вы используете Plan9 или используете реализацию Plan9 sed
, которая имеет проблемы с /
внутри выражения в квадратных скобках, используйте альтернативный набор разделителей для команды s///
:
$ sed 's,.*-\([^/]*\).*,\1 &,' file
YYY >hCoV-19/xxx/xxx-YYY/xxx
ZZZ >hCoV-19/xxx/xxx-ZZZ/xxx
Используемое здесь регулярное выражение фиксирует подстроку, не содержащую /
символов после последнего -
в строке. Затем он добавляет к строке эту захваченную подстроку и пробел.
Обратите внимание, что основное различие между этим решением sed
и решением awk
заключается в том, что код awk
использует структуру каждой строки, подобную полю -, в то время как код sed
более " sloppy", просто ищет строку символов без косой черты -после тире.
Сайт https://regexr.com/
в настоящее время поддерживает регулярные выражения JavaScript и Perl -совместимые регулярные выражения (PCRE ). Вы не используете здесь ни один из этих двух языков, поэтому все, что говорит вам сайт, может не работать. awk
использует расширенные регулярные выражения POSIX (ERE )и большинство других стандартных инструментов Unix для работы с текстом, включая sed
, использует базовые регулярные выражения POSIX (BRE ).
См. также Почему мое регулярное выражение работает в X, но не в Y?