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,很多还不明白!
如果好的话还会有金币感谢
[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个文件里的内容全部显示出来。
我觉得最好,你可以把结果输出保存到文本里。有时间我把那个脚本改一下吧。
对,写个脚本
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/ ]是啥意思?