这是我尝试运行的脚本
#!/bin/bash
charlist=$1 #possible input:cat
wordlength=$2 #possible input: 3
cat ./nounlist | egrep \b[${charlist}]\b{${wordlength}}
输出:什么都没有。#应该捕获以下内容(使用命令行)
$ cat nounlist | egrep "\b[cat]{3}\b"
act
cat's_cradle
cat
cat-o'-nine-tails
cat's-paw
Sno-cat
act
act
act
act
rat-a-tat-tat
cat
cat's-claw
cat's_foot
cat's-ear
cat's-tail
cat's-ear
cat's_eye
基本上我试图编写一个脚本,它接受两个参数(wordlist,wordlength)并获取名词列表中的所有单词,这些单词由单词列表中的字符组成,并且具有 wordlength 变量的长度。我想知道的是如何将bash变量作为字符串放入egrep的正则表达式中?
Thanks!
您需要将参数用双引号引起来,以便 Bash 不会尝试处理反斜杠,并移动第二个\b
to after the {${wordlength}}
:
cat ./nounlist | egrep "\b[${charlist}]{${wordlength}}\b"
(如果你跑echo \b
,你会看到它只是打印b
。这是因为 Bash 假设\
有没有办法防止b
具有任何特殊含义;所以它删除了它。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)