числовая переменная в сценарии bash регулярного выражения egrep - PullRequest
0 голосов
/ 21 мая 2019

Поэтому я пытаюсь создать скрипт, который содержит egrep и принимает числовую переменную

#!/bin/bash

var=$1
list="egrep "^.{$var}$ /usr/share/dict/words"
cat list

Например, если var равен 5, я бы хотел, чтобы этот скрипт выводил каждую строку из 5 символов.По какой-то причине скрипт этого не делает.Помощь будет принята с благодарностью!

1 Ответ

3 голосов
/ 21 мая 2019

Ваш скрипт не работает, потому что есть несколько проблем с этими строками:

list="egrep "^.{$var}$ /usr/share/dict/words"
cat list
  1. Первая строка не завершена, в ней отсутствует заключительная цитата,
  2. Даже если вы исправили это, вы присваиваете буквенную строку list, а не вывод команды
  3. RE и имя файла должны быть разделены
  4. cat не печатает содержимое переменной, echo делает это.

Итак:

#!/bin/bash
var="$1"
list="$(egrep '^.{'"$var"'}$' /usr/share/dict/words)"
echo "$list"

должно работать.

Или, что еще лучше, вы можете использовать просто команду :

awk 'length==5' /usr/share/dict/words

с $1 или любой другой переменной:

awk -v n="$1" 'length==n' /usr/share/dict/words
...