Linux Shell编程 在文件/文件夹里查找字符串……很急切

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Shell编程 在文件/文件夹里查找字符串……很急切相关的知识,希望对你有一定的参考价值。

在文件/文件夹里查找字符串(不考虑文件的有效性和权限问题)
(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,很多还不明白!
如果好的话还会有金币感谢

参考技术A grep 字符串 -n -H 路径 就可以返回你找到的字符串的文件名,所在行号以及其内容。最好将路径付给一个变量,比较好写。 参考技术B 临下班随便写一个,大体我是这个思路,估计你看看明白,自己在改改就行了。

[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 ~]$追问

大哥,这个答案是你楼上再另一个问题中回答时的答案……

参考技术C [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]#
参考技术D 昨天我不是写过这个小脚本吗?你照着我写那个自己改改吧。追问

刚刚学,挺多不明不,我就着你那个改了,不太理想,输入查找到字符后就没了……没有显示结果

追答

其实你不应该 用显示的方式来得到结果。
比如我文件夹下有100个文件,我那个脚本执行后,会搜索100个文件里的内容全部显示出来。
我觉得最好,你可以把结果输出保存到文本里。有时间我把那个脚本改一下吧。

本回答被提问者采纳
第5个回答  2011-10-21 你这个是要写个脚本么?vi不如vim好追问

对,写个脚本

Linux Shell编程之输入输出重定向

一、.输入重定向:

1.以覆盖方式把正确输入和错误输入都保存在同一个文件中
命令 &> 文件

2.以追加方式把正确输入和错误输入都保存在同一个文件中
命令 &>> 文件

在这里插入图片描述

3.以追加方式把正确输入保存在文件1中,把错误输入保存在文件2中
命令 >> 文件1 2>> 文件2

在这里插入图片描述
二、.输出重定向:

wc [选项] [文件名]

选项:
-c 统计字节数
-w 统计单词数
-l 统计行数

以上是关于Linux Shell编程 在文件/文件夹里查找字符串……很急切的主要内容,如果未能解决你的问题,请参考以下文章

linux用户信息里面的: shell /bin/bash 啥意思阿?

linux用户信息里面的: shell /bin/bash 啥意思阿?

linux/unix 的 shell编程里 pipe功能指的是啥功能?

liunx 下的shell语句 if [ ! -d /$1/$2/$3/ ]是啥意思?

linux的shell编程中#!/bin/sh和bash是啥意思?

请问linux把shell的信息全部输出到文本文件的命令是啥?