grep/tail/head

2018-04-23  本文已影响20人  慧琴如翌

cat 1.txt |grep ff
---将文件1.txt中包含ff字符串的所有行打印出来

cat 1.txt |grep ff -A4
----查看filename中含有ff所在行后4行内容

cat 1.txt |grep f -B4
----查看filename中含有ff所在行前4行内容

例如:

[root@k8s-uat-node73 riskbell]# cat 1.txt 
asdf
2222
ffff
,.;'
8888
f2345
a45f
wwww
22222
33333
44444
666677
[root@k8s-uat-node73 riskbell]# cat 1.txt |grep f -A4
asdf
2222
ffff
,.;'
8888
f2345
a45f
wwww
22222
33333
44444
[root@k8s-uat-node73 riskbell]# cat 1.txt |grep f 
asdf
ffff
f2345
a45f

grep

1. 在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?

#将1.txt文件中的以f开头的行的内容写到t1.log
[root@k8s-uat-node73 riskbell]# grep -e ^f 1.txt >t1.log   
[root@k8s-uat-node73 riskbell]# cat t1.log 
ffff
f2345
下面这种跟上面的是等效的
[root@k8s-uat-node73 riskbell]# cat 1.txt |grep ^f
ffff
f2345

# 将查找出来的指定行写入到另一个文件
[root@k8s-uat-node73 riskbell]# cat 1.txt |grep ^f >t1.log 
[root@k8s-uat-node73 riskbell]# cat t1.log 
ffff
f2345

-E 表示使用扩展表达式
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。

2. 查找出来满足两个条件中的一个的指定行

[root@k8s-uat-node73 riskbell]# grep -E 'f|a' 1.txt >t1.log 
[root@k8s-uat-node73 riskbell]# cat t1.log 
asdf
ffff
f2345
a45f

3. 查找出来同时满足两个条件的指定行

[root@k8s-uat-node73 riskbell]# grep 'f' 1.txt  | grep "2"  > t1.log
[root@k8s-uat-node73 riskbell]# cat t1.log 
f2345

https://www.cnblogs.com/bingyublog/p/8039518.html

grep后面跟正则表达式

输出文件中数字开头的行

fujunmindeMacBook-Pro:temp fujunmin$ cat 1.txt 
1111aaaa
qqqqqq222ert
wwwww6678
eeee009
999wfg77
WDFF
dddd8
fujunmindeMacBook-Pro:temp fujunmin$ grep -E '^[0-9]' 1.txt 
1111aaaa
999wfg77

输出文件中非字母开头的行

fujunmindeMacBook-Pro:temp fujunmin$ grep -v  -E '^[a-z]' 1.txt |grep -v -E '^[A-Z]'
1111aaaa
999wfg77

注意:

  1. -v 表示不包含
    2.-E 表示后面跟的是正则表达式

查找以指定字符串开头的文件

find . -name pro*


image.png

查看一个文件内容的第几行到第几行

sed -n '5,10p' filename 行

这样你就可以只查看文件的第5行到第10

[root@k8s-uat-node73 riskbell]# cat t1.log 
asdf
ffff
f2345
a45f
[root@k8s-uat-node73 riskbell]# sed -n '2,3p' t1.log 
ffff
f2345

从第四行开始显示到最后

sed -n '4,$p' file.txt

包括第3行哦

fujunmindeMacBook-Pro:temp fujunmin$ cat 1.txt 
1111aaaa
qqqqqq222ert
wwwww6678
eeee009
999wfg778
fujunmindeMacBook-Pro:temp fujunmin$ 
fujunmindeMacBook-Pro:temp fujunmin$ sed -n '3,$p' 1.txt
wwwww6678
eeee009
999wfg778
fujunmindeMacBook-Pro:temp fujunmin$ 

显示文件的最后几行

[root@k8s-uat-node73 riskbell]# cat 1.txt | tail -n 3
33333
44444
666677

显示文件的开始几行

[root@k8s-uat-node73 riskbell]# cat 1.txt | head -n 3
asdf
2222
ffff

显示从第2行开始的3行内容(包括第2行在内的一共3行)

[root@k8s-uat-node73 riskbell]# cat 1.txt |tail -n +2 |head -n 3
2222
ffff
,.;'

分解: tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行


不符合条件的行选出来:

将/etc/passwd,将没有出现 root 和nologin的行取出来

grep -v root /etc/passwd | grep -v nologin

root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

上一篇下一篇

猜你喜欢

热点阅读