Принимая два целочисленных аргумента (первое меньшее, чем второе) распечатывают линии между двумя целочисленными аргументами

Используйте одинарные кавычки (или экранируйте \ ) вокруг оператора замены, иначе оболочка обработает $ {1} как переменная.

Итак, вы можете сделать:

rename -n 's/([0-9])/0${1}/' *.mp4

Или

rename -n "s/([0-9])/0\${1}/" *.mp4
0
28.11.2018, 20:19
1 ответ

Я мог бы подойти к этому так:

low=$1
high=$2
if [ "$low" -lt "$high" ]
then
  awk -v low="$low"-v high="$high" '$1 >= low && $1 <= high { print substr($0, index($0, " ")+1) }' /home/misc/gwrika/cse251/hw3/short-rockyou.txt
else
  echo "please enter the first argument as the smaller number and the second argument as the larger number"
fi

Я переименовал ваши переменные, но суть в том, что это простой awk-скрипт, в котором вы передаете нижний и верхний пределы, а затем спрашиваете, находится ли столбец 1 в этом диапазоне; если так,он печатает второе поле (, находя позицию первого пробела и пропуская его ). Если, как в вашем образце ввода 30 yahoo123, у вас есть несколько пробелов, отделяющих частоту от пароля, но все пароли начинаются с определенного столбца, используйте:

awk... print substr($0, 7)...

, чтобы начать печать с соответствующего столбца.

1
28.01.2020, 02:41

Теги

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