❶ 如何在Linux下查找文件内容包含某个特定字符串的文件
如何在Linux下查找文件内容包含某个特定字符串的文件?
我的目录下面有test1和test2两个文件夹,里面都含有很多文件,其中test2里面还包含一个test文件夹
我想请问的是,如何通过查找关键字test从而找到test1跟test2还有test,并且不显示其他文件
我尝试过用find/path-nametest查找,结果出来的是/path/test2/test
lstest*查找,结果连同test1跟test2里面的子文件都显示出来,罗列了一大堆
我还尝试了用findtest*查找,结果跟用上面的一样,只是罗列的方式不一样而已
❷ linux grep查询结果再过滤
令|grep查询过滤需要使用管道命令|。
举例说明:
1、在进程表中查找特定进程的命令通常如专下:
❸ linux怎样用grep过滤
不知道你是想实现什么目的,如果你是想只显示配置文件中的以 # 号开头的行版,那就使用
# grep ^# filename
如果是想显示除权 # 号开头的行的话呢,只需加个参数-v (-v 表示相反的过滤)就行了
# grep -v ^# filename
❹ linux 操作系统中shell过滤
这不简单,循环嵌套case多分枝选择结构,一楼的回答我就不说什么了,根本就没有/bash/这个路径,sh自然也不会存在在这个路径上。这个脚本就是可能的数值太多,case分支写得累……。算了,我给你写个吧。
说明:此脚本接收脚本后跟的第一个参数为读取定义数值的文本,比如说你在工作路径上有个叫test的文件,该文件定义了需要包含的数字,脚本本身的文件名是num那么执行该脚本的命令是./num ./test
每个数字对应的命令自己改吧,我这里全是打印文件里包含了对应的数值到标准输出上。以下脚本在ubuntu server 8.04测试通过。
#! /bin/bash
for var in `sed 's/,/ /g' $1` #注意,包围sed语句的是反引号,即字母键盘上方数字1左边的那个键
do
case $var in
0)
echo "0 is in the string\.";;
1)
echo "1 is in the string\.";;
2)
echo "2 is in the string\.";;
3)
echo "3 is in the string\.";;
4)
echo "4 is in the string\.";;
5)
echo "5 is in the string\.";;
6)
echo "6 is in the string\.";;
7)
echo "7 is in the string\.";;
8)
echo "8 is in the string\.";;
9)
echo "9 is in the string\.";;
10)
echo "10 is in the string\.";;
11)
echo "11 is in the string\.";;
12)
echo "12 is in the string\.";;
13)
echo "13 is in the string\.";;
14)
echo "14 is in the string\.";;
15)
echo "15 is in the string\.";;
16)
echo "16 is in the string\.";;
17)
echo "17 is in the string\.";;
18)
echo "18 is in the string\.";;
19)
echo "19 is in the string\.";;
20)
echo "20 is in the string\.";;
21)
echo "21 is in the string\.";;
22)
echo "22 is in the string\.";;
23)
echo "23 is in the string\.";;
24)
echo "24 is in the string\.";;
25)
echo "25 is in the string\.";;
26)
echo "26 is in the string\.";;
27)
echo "27 is in the string\.";;
28)
echo "28 is in the string\.";;
*)
echo "One or more variable\(s\) in $1 is out of range!";;
esac
done
❺ linux中怎么去除只包含某个字符的行
只包含和包含的含义不一样哦。
只包含版
sed "/^-$/d" a.txt > tmp.txt
包含
sed "/-/d" a.txt > tmp.txt
tmp.txt就是你要的文件权.
t:root:/tmp> sed "/^-$/d" a.txt
abc - def
ghi
jik
- abd
ggg
t:root:/tmp> sed "/-/d" a.txt
ghi
jik
ggg
t:root:/tmp> cat a.txt
-
abc - def
ghi
jik
-
- abd
ggg
❻ 在linux系统如何grep过滤中,不包含某些字符
1、linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、格式
grep[options]
3、主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
。:所有的单个字符。
* :有字符,长度可以为0。
4、grep命令使用简单实例:
$ grep ‘test’d*
显示所有以d开头的文件中包含test的行。
$ grep ‘test’aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
❼ LINUX过滤内容的问题
|1、复制文件到/tmp目录
cp /etc/rsyslog.conf /tmp
2、去除#开头和包含空格的行,重定向内到/root/grep.txt文件容
cat /tmp/rsyslog.conf | grep -v " "|sed 's/^#//g' > /root/grep.txt
❽ 什么过滤操作在Linux中如何实现
过滤操作就是指在一大堆文本信息中筛选出你关心的数据。
一般用 ls + 通配符,专或属 grep, sed 或 awk 这些支持正则表达式的工具都可以实现过滤操作。
比如:
ls *.jpg #过滤出当前目录下以jpg为后缀的所有文件,这是通配符用法
grep "abc" file.txt #过滤出file.txt中包含abc的行,这里没有使用正则表达式
ls | grep "[a-z][0-9].csv" #从ls的结果中过滤出文件名格式为一个字母加一位数字并以.csv为后缀的文件名,这里用了正则表达式(字母集合[a-z]与数字集合[0-9])
❾ Linux 排序的时候过滤掉某个内容。
|cat test.log | awk {print'$n'} | sort -nr | uniq -c | sort -k1 -nr 其中袭 $n 为需要按出现次数排序的那一列 sort -nr 先排序 uniq -c 去重并计算出现次数 sort -k1 -nr 按出现次数排序
❿ linux过滤关键字的下一行,这个命令怎么写
linux grep命令
1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2.格式
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
4.grep命令使用简单实例
$ grep ‘test’ d*
显示所有以d开头的文件中包含 test的行。
$ grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。
5.grep命令使用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic /usr/src/Linux/Documentation/* | less
这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。
下面还有一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,