我希望能够显示输入读取中包含该单词的每一行。 现在我能够显示输入读取字的索引位置。
echo "Filename"
read file
echo "A word"
read word
echo $file | awk '{print index($0,"'"$word"'")}'
答案 0 :(得分:1)
这里要求的是如何使用grep的示例
以下命令将使用wget来获取此stackoverflow网页的内容,-O -
选项告诉wget将html输出到std out,然后将其传送到grep -n grep
。
grep匹配术语“grep”出现在html中的实例数,然后输出匹配发生的相应行号 - 并突出显示匹配。
wget -O - http://stackoverflow.com/questions/27691506/how-to-display-a-word-from-different-lines | grep -n grep
e.g。当我在终端中运行时(忽略与wget相关的输出)grep -n grep
给出:
42: <span class="comment-copy">why dont you use <code>grep</code> ?</span>
468: <span class="comment-copy">@nu11p01n73R Can you give me any example, on how to use grep?</span>
495: <span class="comment-copy">As per your question <code>grep $word $file</code> will output lines in <code>$file</code> containing <code>$word</code></span>
521: <span class="comment-copy">If you want line numbers too, you can use <code>grep</code> like this: <code>grep -in $word $file</code></span>
注意stackoverflow语法突出显示与您在终端中获得的内容不同
答案 1 :(得分:1)
如果您还要打印行号
read -p 'Filename? ' fname
read -p 'Word to search? ' word
awk /"$word"/'{print NR, $0}' "$fname"
如果您不想要行号
read -p 'Filename? ' fname
read -p 'Word to search? ' word
awk /"$word"/ "$fname"
BTW,每个人都告诉你的是“使用grep”,但看看这个
% time for i in {1..10000} ; do grep alias .bashrc > /dev/null ; done
real 0m22.665s
user 0m2.672s
sys 0m3.564s
% time for i in {1..10000} ; do mawk /alias/ .bashrc > /dev/null ; done
real 0m21.951s
user 0m3.412s
sys 0m3.636s
当然gawk
较慢,在这种情况下为27.9秒。