·seq sequence #序列
·sed stream editor #(三剑客老二)流编辑器。实现对文件的增删改替换查。
-n #取消默认输出。sed -n '20,30'p ett.txt 这里 p 表示打印
一、sed命令:
d 删除当前模式空间所有的内容。
g 与s联合使用时,表示对当前行全局匹配替换。
p 打印匹配行。
s 常说的查找并替换,用一个字符串替换成另一个。
二、sed选项:
-e #允许多项编辑
-f #后面接sed脚本的文件名
-n #取消默认输出
-i #修改文件内容
·awk (三剑客老大)过滤,输出内容,自成一门语言。 NR:行号
特殊符号:
·= #linux里 一个=号是赋值的意思,俩个==号才是等于的意思
·有能力的人,给出三种以上的方法,才叫有方法!
问题十一:只查看ett.txt文件(100行)内第20到第30行的内容(企业常见面试题)。
解答:sequence==seq序列
方法一: (这方法很low)
head [-n] [文件名] :后面直接跟文件名,显示文件前十行。-n表示显示文件前n行。
tail [-nf] [文件名] :后面直接跟文件名,显示文件后十行。-n表示显示文件后n行。
[root@localhost /]# head -30 ett.txt|tail -11
20
21
22
23
24
25
26
27
28
29
30
方法二:(*必会)
·sed -n '20,30'p ett.txt #这个命令更有效,要记住!
-n #取消默认输出。
p #表示打印
[root@localhost /]# sed -n '20,30'p ett.txt (用引号‘’保险,规范)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# sed -n '$'p ett.txt ($符号是结尾的意思)
100
方法三:锦上添花:
[root@localhost /]# awk '19<NR && NR<31' ett.txt (NR行号;&&并且,俩边同时成立)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# awk '19<NR&&NR<31' ett.txt (&&俩边没空格也行)
20
21
22
23
24
25
26
27
28
29
30
方法四:锦上添花
[root@localhost /]# awk '{if(NR<31 && NR>19) printf $0"
"}' ett.txt
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# awk 'NR==31' ett.txt (直接定在第31行)
31
方法五:
[root@localhost /]# grep 20 -A 10 ett.txt (匹配第20行,显示改行之后的10行)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# grep 30 -B 10 ett.txt (匹配第30行,显示改行之前的10行)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# grep 25 -C 5 ett.txt (匹配第25行,然后再显示改行前后各5行)
20
21
22
23
24
25
26
27
28
29
30
#Context control:
-A #除了显示匹配的一行之外,并显示该行之后的num行。
-B #除了显示匹配的一行之外,并显示该行之前的num行。
-C #除了显示匹配的一行之外,并显示该行之前后各num行。
此篇命令记录:
[root@localhost /]# seq 1 10
1
2
3
4
5
6
7
8
9
10
[root@localhost /]# seq 1 2 10
1
3
5
7
9
[root@localhost /]# seq 1 3 10
1
4
7
10
[root@localhost /]# seq 100 >ett.txt (这代表创建了一个有1-100,100行数字的文件)
[root@localhost /]# cat ett.txt
1
。。。(这里我手动省略98行)
100
[root@localhost /]# head -30 ett.txt|tail -11
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# sed -n '20,30'p ett.txt
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# awk '19<NR&&NR<31' ett.txt (&&俩边没空格也行)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# awk '{if(NR<31 && NR>19) printf $0"
"}' ett.txt
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# awk 'NR==31' ett.txt
31
[root@localhost /]# grep 20 -A 10 ett.txt (匹配第20行,显示改行之后的10行)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# grep 30 -B 10 ett.txt (匹配第30行,显示改行之前的10行)
20
21
22
23
24
25
26
27
28
29
30
[root@localhost /]# grep 25 -C 5 ett.txt (匹配第25行,然后再显示改行前后各5行)
20
21
22
23
24
25
26
27
28
29
30
#Context control:
-A #除了显示匹配的一行之外,并显示该行之后的num行。
-B #除了显示匹配的一行之外,并显示该行之前的num行。
-C #除了显示匹配的一行之外,并显示该行之前后各num行。