Измените Python по умолчанию с 3.7 на 3.6 или 3.5 в Ubuntu 19.04

for i in $(ls $INPUT_DIR | egrep -i '^'$INPUT_FILE_PREFIX'[0-9][0-9]([0][1-9]|1[0-2])([0][1-9]|[12][0-9]|[3][01])'$INPUT_FILE_SUFFIX);

В общем, нет причин использовать lsв такой структуре, это просто делает команду более неудобной для чтения, плюс вы столкнетесь с проблемами в некоторых крайних случаях (см. ParsingLs в BashGuide ). Однако регулярное выражение, которое у вас есть, не может быть представлено в виде стандартного глобуса оболочки, поэтому есть смысл его использовать. Хотя, поскольку это было помечено с помощью , мы можем сделать это в оболочке, либо с помощью extglob(, либо используя совпадения регулярных выражений с конструкцией [[.. ]]после более широкого glob ).

shopt -s extglob
for i in "$INPUT_DIR/$INPUT_FILE_PREFIX"[0-9][0-9]@(0[1-9]|1[0-2])@(0[1-9]|[12][0-9]|3[01])"$INPUT_FILE_SUFFIX" ; do

Если вам действительно не нужен такой строгий шаблон, вы можете просто использовать вместо него [0-9][0-9][0-9][0-9][0-9][0-9].

В назначении MYDATEя предполагаю, что вы просто хотите удалить префикс и суффикс. (хотя, если ваш префикс/суффикс содержит строку из шести -цифр, grep также будет соответствовать этому.)

MYDATE=${i#"$INPUT_DIR/"}              # remove the directory
MYDATE=${MYDATE#"$INPUT_FILE_PREFIX"}  # remove the prefix
MYDATE=${MYDATE%"$INPUT_FILE_SUFFIX"}  # and the suffix

Полностью:

shopt -s extglob
for i in "$INPUT_DIR/$INPUT_FILE_PREFIX"[0-9][0-9]@(0[1-9]|1[0-2])@(0[1-9]|[12][0-9]|3[01])"$INPUT_FILE_SUFFIX" ; do
    MYDATE=${i#"$INPUT_DIR/"}              # remove the directory
    MYDATE=${MYDATE#"$INPUT_FILE_PREFIX"}  # remove the prefix
    MYDATE=${MYDATE%"$INPUT_FILE_SUFFIX"}  # and the suffix
    echo "$MYDATE"
done
2
07.09.2019, 14:55
1 ответ

Я бы посоветовал использовать Conda . Это позволяет вам создать виртуальную среду Python в любой версии, которую вы хотите.

0
27.01.2020, 22:24

Теги

Похожие вопросы