我正在尝试创建一个脚本(bash),它将从用户获取输入(整数)并grep包含该字母数的所有单词。我很好grep基本上是如何工作的,但我不确定如何使用来自用户的输入来确定输出
这是我的开始:
#!/bin/sh
echo " Content type: text/html"
echo
x=`expr $1`
我非常确定grep命令就像grep ^ ... 来自用户 $的整数一样简单。只是不知道如何使用用户输入。谢谢!
编辑:我应该提到"用户输入"将作为参数输入(./script 6)答案 0 :(得分:3)
以./script 6
运行此脚本,它将从文件text
中选择所有6个字母的单词并显示它们:
#!/bin/sh
grep -Eo "\<[[:alpha:]]{$1}\>" text
正则表达式的关键部分:
\<
表示单词的开头。
[[:alpha:]]{$1}
表示$1
个字母字符。如果您希望撇号(例如don't
中的撇号)被视为有效的单词字符,请将其添加到外部方形支票中,如下所示:[[:alpha:]']{$1}
\>
表示单词的结尾。
grep
理解人类语言的能力有一些限制。例如,在字符串don't
中,它将撇号视为单词边界。
我针对问题的文本运行了这个脚本:
$ ./script.sh 9
basically
determine
mentioned
$ ./script.sh 10
containing
答案 1 :(得分:0)
您可以使用read
来管理用户的输入。
#!/bin/sh
echo $1 | grep ".\{$2\}"
现在如果您将脚本调用为./script hello 5
位置参数$1
为hello
,$2
为5
此处{m}
将m
行的行与.
匹配,任何字符都匹配m
次