当前位置:首页 » 操作系统 » linux命令grep

linux命令grep

发布时间: 2022-02-23 16:14:18

linux grep命令,怎么取两个字符串之间的内容比如,abcdefg我要找ab到fg之

这个需求不能用grep来实现,本质上是字符串的切割查找提取子串,可用awk来实现,例


echoabcdefghelloword|awk-vhead="ab"-vtail="fg"'{printsubstr($0,index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}'

以上关键是计算出开头标记"ab",和结束标记"fg" 在字符串中的位置

执行结果就是

cde

Ⅱ 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中grep和find的区别

1.
linux中的find等同与win中的搜索文件。
find是在磁盘/分区中找到文件,可以配type可以配size
time等,通过文件名或文件大小或访问时间找到指定文件。
2.
linux中的grep等同与win中的findstr命令。可以在一个txt文本中截取到有特定关键字的行,并显示出来。
grep也可以通过关键字,在一个文件夹下查找多个有这些关键字的文件,并生成结果。
3.
可以详细参考find命令在网络的文库文档
http://wenku..com/view/5e4070160b4e767f5acfce0b.html

Ⅳ linux grep命令

grep -li 'error' --include=systemout.2012-11-*.log

--include用来通配你需要查找的文件名
======================================
======================================
我补充回答:
cd /home/tomcat/logs
grep -i 'error' systemout.2012-11-*.log

这样总行了吧

Ⅳ linux中awk以及grep命令

ls|xargs grep -E "^rec|^orec" | awk -F "|" '{if($68==0)print $1}'|awk -F: '{print $1}'|sort|uniq

Ⅵ linux下查看进程的命令,ps | grep 和 ps aux | grep 有什么区别啊

ps | grep 和 ps aux | grep两个命令差别在于ps的参数aux,
ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。

Ⅶ windows下类似linux下grep搜索命令

windows下的类似linux下的grep命令——findstr
经常用linux下的grep命令,比如:
netstat -an|grep 1521
其实windows下也有一个类似的命令findstr,比如:
C:/Windows/system32>netstat -an|findstr 1521
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 192.168.1.100:1521 192.168.1.100:49686 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49701 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49702 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49706 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49707 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49753 ESTABLISHED
TCP 192.168.1.100:49686 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49701 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49702 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49706 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49707 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49753 192.168.1.100:1521 ESTABLISHED
TCP [::]:1521 [::]:0 LISTENING
当然windows下还有一个find命令,比如:
C:/Windows/system32>netstat -an|find "1521"
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 192.168.1.100:1521 192.168.1.100:49686 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49701 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49702 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49706 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49707 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49753 ESTABLISHED
TCP 192.168.1.100:49686 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49701 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49702 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49706 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49707 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49753 192.168.1.100:1521 ESTABLISHED
TCP [::]:1521 [::]:0 LISTENING
两个命令的区别是find需要用引号引起来。

Ⅷ linux的grep查询命令

grep默认只能识别基本的正则表达式,如果需要高级的,需要这样:
grep -E 'A.*B|B.*A' filename
可以找到符合要求的,或者使用awk:
awk '/A/&&/B/' filename

Ⅸ linux命令里,grep * 是什么意思

任意一个字节 . 与重复字节 *
这两个符号在正则表达式的意义如下:
. (小数点):代表‘一定有一个任意字节’的意思;
* (星号):代表‘重复前一个字符, 0 到无穷多次’的意思,为组合形态

假设我需要找出 g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d ,我可以这样做:
[root@www ~]# grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.
16:The world <Happy> is the same with "glad".

因为强调 g 与 d 之间一定要存在两个字节,因此,第 13 行的 god 与第 14 行的 gd 就不会被列出来啦!

如果我想要列出有 oo, ooo, oooo 等等的数据, 也就是说,至少要有两个(含) o 以上,该如何是好?
因为 * 代表的是‘重复 0 个或多个前面的 RE 字符’的意义, 因此,‘o*’代表的是:‘拥有空字节或一个 o 以上的字节’,因此,‘ grep -n 'o*' regular_express.txt ’将会把所有的数据都打印出来终端上!
当我们需要‘至少两个 o 以上的字串’时,就需要 ooo* ,亦即是:
[root@www ~]# grep -n 'ooo*' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
19:goooooogle yes!

如果我想要字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o ,亦即是 gog, goog, gooog.... 等等,那该如何?
[root@www ~]# grep -n 'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!

如果我想要找出 g 开头与 g 结尾的行,当中的字符可有可无
[root@www ~]# grep -n 'g.*g' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.

因为是代表 g 开头与 g 结尾,中间任意字节均可接受,所以,第 1, 14, 20 行是可接受的喔! 这个 .* 的 RE 表示任意字符是很常见的.

热点内容
数据库设计模板 发布:2024-11-15 00:47:25 浏览:825
编程的悟性 发布:2024-11-15 00:47:24 浏览:733
主流可编译语言 发布:2024-11-15 00:42:23 浏览:729
excel缓存清除 发布:2024-11-15 00:39:53 浏览:486
机械键盘可编程 发布:2024-11-15 00:39:09 浏览:912
php判断字符开头 发布:2024-11-15 00:35:33 浏览:507
网易苹果游戏怎么转移到安卓 发布:2024-11-15 00:07:52 浏览:270
win7php环境搭建 发布:2024-11-15 00:06:55 浏览:17
erpjava 发布:2024-11-14 23:52:23 浏览:253
电脑版地平线四怎么连上服务器 发布:2024-11-14 23:46:42 浏览:472