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
注意:
- -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