Shell for循环grep -c 数组 结果只匹配最后一条数据

作者&投稿:冀于 (若有异议请与网页底部的电邮联系)
shell grep 的结果只取第一行~

可以使用head -1 命令来只取grep到的数据的第一行。
例如一个文本文档a.txt内容是:
北京是我们的首都
北京天安门坐落在中华人民共和国首都北京市的中心
我在北京天安门广场吃炸鸡
使用命令 cat a.txt |grep 北京 | head -n 1 可以只取到第一行的数据北京。



扩展资料
Linux中head命令详解:
head命令与tail命令用法相似,head命令用于查看文档的开始指定数量的字符块,默认显示文档的前 10 行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。
1、grep命令用法格式
head 【参数】【文件】
2、命令选项
-c, --bytes=[-]K   k,显示文档开始的前k个字节,-k,不显示文档结尾的最后 k 个字节
-n, --lines=[-]K    k,显示文档开始的前k行,-k,不显示文档结尾的最后 k 行
-q, --quiet, --silent 不显示包含给定文件名的文件头
-v, --verbose   总是显示包含给定文件名的文件头
--help      显示此帮助信息并退出
--version     显示版本信息并退出
3、实例
#显示前5行
head -n 5 head.txt
#显示前5个字节
head -c 5 head.txt

用grep -w精确匹配就可以了
比如需要获取的文件里面包含两行:
192.168.0.1
192.168.0.1:80
如果用grep匹配192.168.0.1的话取得的结果是两行
如果用grep -w来匹配的话只能取得:192.168.0.1这一行

按照你的 代码,这里运行没发现问题:

logs.txt里也放的你的代码,查找上面几个词出现的次数。得到了正确结果。

logs.txt是和脚本在同一目录。


可以新建一个脚本,只保留:

result=`grep -c "${array[$i]}" logs.txt`
echo $result

这两句。把${array[$i]}直接写成aaaaa,查看结果。如果是不是0,说明数组中的内容和你直接输入的有区别(比如空格或其他看不见的东西)




朔州市15616963519: unix shell脚本写一个for循环,比较急!!! -
单闵奥沙: #! /bin/bash for i in `seq 1 100`; do echo file$i touch file$i done

朔州市15616963519: Linux:关于脚本for循环的执行顺序 -
单闵奥沙: 只会执行一次`ps -ef|grep $1|grep -v grep|awk '{ print $2 }'`,然后在返回的结果集中再取第一个值、第二个值、第三个值

朔州市15616963519: Linux编程 在文件/文件夹里查找字符串 -
单闵奥沙: 使用for循环及grep : # for uf in `find . -name \* -type f -print` ;do grep -Hn "hostname" $uf;done 输出结果包括:文件名、行号及关键词

朔州市15616963519: 帮我看一下我这个Linux for循环问题 -
单闵奥沙: 在下面的 while 循环中, user 变量里存的就是你要的东西.while read line do user=`echo $line | cut -d : -f 1` echo "USER is $user" done < userlist.txt

朔州市15616963519: shell里for循环的几种写法 -
单闵奥沙: #从文件循环进入,注意aaa.txt每行中不能有空格,不然会有问题 for i in `cat aaa.txt` do echo $i done #数字循环 for i in `seq 1 100` do echo $i done #while,可以无视行中的空格 while read line do echo $line done < aaa.txt

朔州市15616963519: shell脚本中怎么输出第二列为指定内容的所有行的信息 -
单闵奥沙: 写个脚本,使用for循环,设一个变量i 代表的是行号,从1开始,然后每次执行加1,类似于 a=`cat file|wc -l` for (( i = 0; i < = $a; i++ )) do j = `cat file |awk "NR==$i{print}"|awk '{print $2}'` k =`cat file |awk "NR==$i{print}"` if [[ j -eq xxx ]]; then echo $k fi done 没有测 但是大概就是这么个意思.

朔州市15616963519: shell脚本怎么写for循环 -
单闵奥沙: for I in list; do statement done I 是变量 list是一个表格 如你可以使用一串用括号括起来的数,也可以使用 命令替换 `seq 1 15` 这个命令忘记了,, 有可能是 `seq 15` [1..15] 表示1-15的数,, statement 即要执行的语句 for I in [1..10]; do echo $I done 这段for循环的含义就是显示从1~10的所有数字

朔州市15616963519: 如何在python 的shell里运行for循环并且执行? -
单闵奥沙: 就拿你这题来说吧,trainMat......这行和上行for循环空两个,而不是对齐,for循环体都是这样的,如果你用python集成开发环境(如Pycharm)是帮你自动对齐的,你按照这么写,直到for循环写完,然后按两次回车Enter,就可以执行for循环了.

朔州市15616963519: Linux的shell脚本for循环怎么调用位置变量 -
单闵奥沙: 1、利用$@, $#, $*参数或shift移位参数进行循环2、例1#!/bin/sh while [ $# -gt 0 ]; do echo $1 shift; done3、例2#!/bin/sh until (($#==0)); do echo $1 shift; done4、例3#!/bin/sh for x in $*;do echo $x done5、例4#!/bin/sh for x in $@;do echo $x done

朔州市15616963519: shell grep _v grep|grep- v tail 是啥意思?
单闵奥沙: grep -v grep | grep -v tail 1、第一部分 “grep -v grep" 在文档中过滤掉包含有grep字符的行 2、第二部分“grep -v tail” 在第一部分过滤掉之后再过滤掉剩余文档中包含有tail字符的行 3、总结一下就是:这条命令的意思就是过滤掉文档中包含字符“grep”和“tail”的行 4、可简化为:grep -v "cp|mkdir"

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网