当前位置: 技术问答>linux和unix
一道 linux 的shell编程的题目
来源: 互联网 发布时间:2016-07-19
本文导语: 在指定目录中查找含有某字符串的文件。 比如目录A 下面有一个文件a.txt,其内容 如下: aaaa bbbb cccc 如果要找的字符串为:aaaa,则应返回该文件名 称。 要求: (1)使用方法:程序名 目录名称 所要找的字符串。 ...
在指定目录中查找含有某字符串的文件。
比如目录A 下面有一个文件a.txt,其内容
如下:
aaaa bbbb cccc
如果要找的字符串为:aaaa,则应返回该文件名
称。
要求:
(1)使用方法:程序名 目录名称 所要找的字符串。
(2)若未指定目录名称,则从当前目录查找。
(3)要求给出程序执行的真实的在Linux下的执行结果。
(4)给出含有指定字符串的文件所在行。比如上例,应该返回为第一行。
1-3题已经解决了代码如下:
#/bin/bash
if [$2 -eq ""]
then
for file in $(ls *.txt)
do
more $file|grep -l $1 $file
done
else
for file in $(ls $1/*.txt)
do
more $file|grep -l $2 $file
done
fi
但是第四个问题怎么解决。大家帮忙看看啊,谢谢!!
比如目录A 下面有一个文件a.txt,其内容
如下:
aaaa bbbb cccc
如果要找的字符串为:aaaa,则应返回该文件名
称。
要求:
(1)使用方法:程序名 目录名称 所要找的字符串。
(2)若未指定目录名称,则从当前目录查找。
(3)要求给出程序执行的真实的在Linux下的执行结果。
(4)给出含有指定字符串的文件所在行。比如上例,应该返回为第一行。
1-3题已经解决了代码如下:
#/bin/bash
if [$2 -eq ""]
then
for file in $(ls *.txt)
do
more $file|grep -l $1 $file
done
else
for file in $(ls $1/*.txt)
do
more $file|grep -l $2 $file
done
fi
但是第四个问题怎么解决。大家帮忙看看啊,谢谢!!
|
grep加上-n参数不就可以显示所在行了吗,不知道楼主要的是不是这个意思
|
more $file|grep -n $2 $file | cut -d ":" -f 1-2
如果不想要文件名,就是
more $file|grep -n -h $2 $file | cut -d ":" -f 1
如果不想要文件名,就是
more $file|grep -n -h $2 $file | cut -d ":" -f 1
|
如果不要文件名,这样也行
more $file|grep -n $2 $file | cut -d ":" -f 2
more $file|grep -n $2 $file | cut -d ":" -f 2
|
直接grep不行吗? grep -n $2 $file
前面加上more好像没什么必要
前面加上more好像没什么必要
|
grep就可以满足你的需求啊,难道不是吗?