Linux命令-grep

grep是Linux中的一个截取/筛选命令,一行一行分析处理的。

san@seth:~$ grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a : 将 binary 文件以 text 文件的方式搜寻数据
-c : 计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n : 顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

在文件中查找以^MANPATH开头的文件行,并打印行号。

san@seth:~$ grep -n MANPATH /etc/manpath.config
29:MANPATH_MAP  /bin                    /usr/share/man
30:MANPATH_MAP  /usr/bin                /usr/share/man
31:MANPATH_MAP  /sbin                   /usr/share/man
......略......

我知道使用 last 可以输出登入者,但是 last 最后两行并非账号内容,那么请问,
我该如何以一行指令串取得登入系统的总人次?
last | grep [a-zA-Z] | grep -v 'wtmp' | grep -v 'reboot' | \
> grep -v 'unknown' |wc -l

# 由于 last 会输出空白行, wtmp, unknown, reboot 等无关账号登入的信息,因此,我利用grep 取出非空白行,以及去除上述关键词那几行,再计算行数,就能够了解啰!

"\" 在Linux中,此符号为转移字符,在此处为换行,在下一行出现>符号,在继续上一行的输入

grep正则用法:

regular_express.txt文件是从鸟哥给的服务器上下载的,下载如下:

wget http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt

例题一、搜寻特定字符串:在文件中搜索关键字“the" ,并打印行号。

grep -n 'the' regular_express.txt 

grep -vn 'the' regular_express.txt  # -v为反选,搜索不含”the"的行,并打印行号。

例题二、利用中括号 [] 来搜寻集合字符

grep -n 't[ae]st' regular_express.txt   # 搜索包含tast或test的关键字,并打印行号。

其实 [] 里面不论有几个字符,他都仅代表某『一个』字符, 所以,上面的例子说明了,我需要的字符串是『tast』或『test』两个字符串而已!

例题三、行首与行尾字符 ^ $

grep -n '^the' regular_express.txt   # 以the开头的行

grep -n '^[^a-zA-Z]' regular_express.txt

那个 ^ 符号,在字符集合符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意思。

grep -n '\.$' regular_express.txt  # 以小数点结尾的行,"$"符号表示以$字符前面的字符结尾的行。

grep -n '^$' regular_express.txt  # 搜索文件中的行号。

例题四、任意一个字符 . 与重复字符 *

 . (小数点):代表『一定有一个任意字符』的意思;
 * (星星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

to be continued...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值