Попробуйте
find. -name '*.txt' -exec perl -i -pe 's/File:[^|]+\K\|[^]]+//g' {} \;
File:[^|]+
соответствует File:
, за которым следуют не |
символы \K
чтобы нам не приходилось захватывать предыдущую строку и возвращать ее в секцию замены \|[^]]+
соответствует |
, за которым следуют не ]
символы, подлежащие удалению sed -i '' 's/\(File:[^|]*\)|[^]]*/\1/g'
вместоperl
Дополнительная литература:
find
, включая использование опции -exec
.. Чтобы избежать путаницы за пределами virtualenvs, я рекомендую использовать упакованные версии:
sudo apt install python-pip virtualenv
(вместе с python3-pip
для поддержки Python 3, если применимо ).
Вам, вероятно, потребуется удалить версии pip
и virtualenv
, установленные в вашем домашнем каталоге, а также любые другие в вашем PATH
вне /usr/bin
.
При настройке виртуальных окружений вы можете указать Python 2.7:
virtualenv -p /usr/bin/python2.7...
и virtualenv
поступают правильно.
После дальнейшего расследования и обсуждения с Стивеном Киттом я обнаружил, что на моем ПК установлено 2 разные версии virtualenv
:
$ find /usr/ -iname "virtualenv" | grep bin
/usr/local/bin/virtualenv
/usr/bin/virtualenv
Тот, что в /usr/bin/virtualenv
, не выдает ошибок при запуске:
$ /usr/bin/virtualenv --version
15.1.0
И, проведя поиск в Интернете, я обнаружил, что тот, что в /usr/local/bin/virtualenv
, должен быть установлен с pip
как root. Поэтому я удалил его с pip
как root :
$ sudo pip uninstall virtualenv
Uninstalling virtualenv-20.0.13:
Would remove:
/usr/local/bin/virtualenv
/usr/local/lib/python2.7/dist-packages/virtualenv-20.0.13.dist-info/*
/usr/local/lib/python2.7/dist-packages/virtualenv/*
Proceed (y/n)? y
Successfully uninstalled virtualenv-20.0.13
Теперь все хорошо:
$ which virtualenv
/usr/bin/virtualenv
$ find /usr/ -iname "virtualenv" | grep bin
/usr/bin/virtualenv