我正在尝试编写我的第一个脚本来搜索名为test的文本文件中的给定模式。这是脚本:
#! /bin/csh
echo -n "enter pattern: "
set pattern = $<
foreach word (`cat test`)
echo $word | egrep $pattern
end
当我尝试运行它时,我收到了一条消息:找不到匹配项。我怀疑问题是由(cat test
)引起的。任何帮助将不胜感激。
答案 0 :(得分:1)
它必须是C shell ......?你可以学习使用awk搜索文件
awk 'BEGIN{
printf "Enter Pattern: "
getline pattern < "-"
}
$0 ~ pattern{
print
}
' myfile
答案 1 :(得分:1)
@Pat - 很高兴你修好了。循环遍历文件中的单词并在每个单元上运行egrep是一种奇怪的方法 - 我认为你正在学习C shell循环,而不是寻找最简洁的解决方案。您可以一次匹配整个文件:
egrep "\b$pattern\b" test
\b
使grep匹配单词边界。
你对csh有我的同情编程 - 这里有一些值得深思的问题:Csh Programming Considered Harmful。