Текстовые редакторы с наименьшим общим LOC

Внимание :Я не знал, что вы используете csh, поэтому мой ответ относится только к bash. Если это не вариант, другие ответы предоставляют полезные решения.

Вы можете использовать оператор =~вместе с массивом BASH_REMATCHдля сопоставления частей имени файла и объединения их в новое имя файла:

#!/bin/bash
for file in *.dat
do
    if [[ $file =~ ([A-Z]+_[A-Z]+_).*(..)\.dat ]]
    then
        xy2sac $file ${BASH_REMATCH[1]}${BASH_REMATCH[2]}.dac
    fi
done

Кстати, вы должны убедиться, что ваши требования и пример совпадают, чтобы нам не пришлось гадать, что вы на самом деле имеете в виду, неясно, действительно ли вам нужно передать пустой здесь -документ в команду. Я построил код, соответствующий вашему примеру, но, по-видимому, первая совпадающая часть не всегда состоит из 8 символов, и вы имели в виду последние два символа перед.dat (, включая _, ), а не только последний.

-2
05.11.2020, 11:20
0 ответов

Теги

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