Ссылка на переменную цикла в аргументе

Вы также можете использовать серебряный искатель или ag с регулярным выражением в ответе @StephenRauch. Это дает вам возможность сделать это с большим количеством файлов, если это будет необходимо.

cd $TARGET_DIR
ag 'AK9\*[PRE]'

0
22.03.2017, 11:47
4 ответа

Если вы хотите передать базовую часть w разных имен файлов в качестве первого параметра сценарию, измените цикл на:

for i in {1..201..5}; do
        grep "Pitch" "${1}-${i}" | cut -d" " -f25
done > pitch.txt

(при условии, что дефис всегда присутствует и не передается как часть параметра, а переменная часть имен файлов всегда находится в конце)

4
28.01.2020, 02:19

Не совсем ясно, что вы ищете, но из того, что я получаю, это то, что у вас есть 6 каталогов, но в каждом каталоге есть файлы, названные аналогичным образом, с номерами в их конце. Тогда вы можете сделать это следующим образом:

for arg
do
   for i in {1..201..5}; do
      grep "Pitch" "$arg-$i" | cut -d" " -f25
   done > $arg/pitch.txt
   echo "========Pitch==========="
   cat $arg/pitch.txt
done
0
28.01.2020, 02:19

Используйте этот синтаксис:

for ((i=0; i<=$1; i=(($i + 5)) ))
        grep "Pitch" filename-$i | cut -d" " -f25
done > pitch.txt
echo "========Pitch==========="
cat pitch.txt
0
28.01.2020, 02:19

Эта функция bash должна работать:

foo() {
    searchstring="$1"
    shift 1
    echo "========${searchstring}===========" ; 
    grep --no-filename "${searchstring}" "$@" | \
    cut -d" " -f25 | tee "${searchstring,,}".txt 
    }

Вызвать так:

foo Pitch filename-{1..201..5}

Как это работает. Поскольку grep позволяет использовать несколько имен файлов из командной строки, а bash позволяет добавлять префиксы в строку к коду, например {1..10} , нет необходимости передавать имена файлов по одному в цикле for . cat и > могут быть заменены одной футболкой .

Первый аргумент foo - это строка поиска (например, « Match ]»), для которой оболочка устанавливает значение « $ 1 », что дает перемещен во временную переменную $ searchstring , затем « Match » удаляется с помощью shift 1 , так что « $ @ » содержит только имена файлов.

0
28.01.2020, 02:19

Теги

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