egrep正则表达式bash脚本中的数值变量

时间:2019-05-21 10:04:46

标签: linux bash shell unix grep

所以我试图制作一个包含egrep并接受数字变量的脚本

#!/bin/bash

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

例如,如果var为5,我希望此脚本以5个字符打印出每一行。由于某种原因,脚本无法执行此操作。帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

您的脚本不起作用,因为这些行存在一些问题:

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