Linux Shell编程 在文件/文件夹里查找字符串……很急切
在文件/文件夹里查找字符串(不考虑文件的有效性和权限问题)(1)找不到,输出Cannotfindmatchstringintargetfilesordirectories...
在文件/文件夹里查找字符串(不考虑文件的有效性和权限问题)
(1)找不到,输出Can not find match string in target files or directories
(2)找到,输出文件名,行号,包含字符串的行,每个文件里匹配的字符串个数,所有文件里匹配的字符串个数
如:file: abc.*
line number: 2 defg abc
line number: 5 iasfdkl abcds
number of matching strings in abc.*: 2
file: def.*
........................
number of matching strings in def.*: 3
number of matching strings in all files: 5
我用的是VI,望能给出答案的同时给一些解释,初学linux,很多还不明白!
如果好的话还会有金币感谢 展开
(1)找不到,输出Can not find match string in target files or directories
(2)找到,输出文件名,行号,包含字符串的行,每个文件里匹配的字符串个数,所有文件里匹配的字符串个数
如:file: abc.*
line number: 2 defg abc
line number: 5 iasfdkl abcds
number of matching strings in abc.*: 2
file: def.*
........................
number of matching strings in def.*: 3
number of matching strings in all files: 5
我用的是VI,望能给出答案的同时给一些解释,初学linux,很多还不明白!
如果好的话还会有金币感谢 展开
5个回答
展开全部
grep 字符串 -n -H 路径 就可以返回你找到的字符串的文件名,所在行号以及其内容。最好将路径付给一个变量,比较好写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
临下班随便写一个,大体我是这个思路,估计你看看明白,自己在改改就行了。
[flycat@redhat ~]$ cat sfile.sh
#!/bin/bash
read -p "请输入要搜索的字串:" STX
NES=(`ls -l | grep -v '^d' | grep -v sfile.sh | awk '{print $9}'`)
for i in ${NES[*]}
do
#if [ $i -eq 2]
lines=`grep "$STX" $i | wc -l`
NE=`grep "$STX" $i -n`
TN=`grep -o "$STX" $i | wc -l`
echo "匹配行数:$lines 字串个数: $TN"
echo -e "显示所有内容:
$NE"
done
[flycat@redhat ~]$ ./sfile.sh
请输入要搜索的字串:this
匹配行数:3 字串个数: 4
显示所有内容:
22:# along with this this program; see the file COPYING. If not, write to
37:# is read after this file.
114:# Center footer is the list of files on this sheet if landscape
[flycat@redhat ~]$
[flycat@redhat ~]$ cat sfile.sh
#!/bin/bash
read -p "请输入要搜索的字串:" STX
NES=(`ls -l | grep -v '^d' | grep -v sfile.sh | awk '{print $9}'`)
for i in ${NES[*]}
do
#if [ $i -eq 2]
lines=`grep "$STX" $i | wc -l`
NE=`grep "$STX" $i -n`
TN=`grep -o "$STX" $i | wc -l`
echo "匹配行数:$lines 字串个数: $TN"
echo -e "显示所有内容:
$NE"
done
[flycat@redhat ~]$ ./sfile.sh
请输入要搜索的字串:this
匹配行数:3 字串个数: 4
显示所有内容:
22:# along with this this program; see the file COPYING. If not, write to
37:# is read after this file.
114:# Center footer is the list of files on this sheet if landscape
[flycat@redhat ~]$
追问
大哥,这个答案是你楼上再另一个问题中回答时的答案……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
[root@node3 test]#
[root@node3 test]# ls
hello test
[root@node3 test]# grep -ri hello .
./test/abc.txt:hello
./test/test/abc.txt:hello
./hello:hello
[root@node3 test]#
[root@node3 test]# ls
hello test
[root@node3 test]# grep -ri hello .
./test/abc.txt:hello
./test/test/abc.txt:hello
./hello:hello
[root@node3 test]#
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
昨天我不是写过这个小脚本吗?你照着我写那个自己改改吧。
追问
刚刚学,挺多不明不,我就着你那个改了,不太理想,输入查找到字符后就没了……没有显示结果
追答
其实你不应该 用显示的方式来得到结果。
比如我文件夹下有100个文件,我那个脚本执行后,会搜索100个文件里的内容全部显示出来。
我觉得最好,你可以把结果输出保存到文本里。有时间我把那个脚本改一下吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-21
展开全部
你这个是要写个脚本么?vi不如vim好
追问
对,写个脚本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |