有这样的面试题:Linux 打印文件第 10-20 行。
在此之前,先造一点数据用于打印测试吧:
i=1;while [ $i -le 100 ];do echo "$i 行,测试测试,over。" >> test.txt;let i++ ;done;
这里简单写了个循环,造了100行数据,长这个样子
然后来解决打印10-20行的问题,这里要使用的指令是sed
1
sed -n '10,20p' test.txt
输出:
-n
按行输出,单引号内的是执行区间10-20,p
是打印指令。2
拓展
- 替换:
s
命令,"/"
是界定符
默认替换第一个
➜ case echo hello dog dog dog | sed 's/dog/cat/'
hello cat dog dog
- 替换全部
g
➜ case echo hello dog dog dog | sed 's/dog/cat/g'
hello cat cat cat
- 替换某个 n
g
替换第二个,mac
下不能加g
,其他环境可以使用2g
➜ case echo hello dog dog dog | sed 's/dog/cat/2'//mac 2不能加g
hello dog cat dog
- 打印命令
p
➜ case echo code hard >> test.txt
➜ case sed -n 's/code/life/p' test.txt
life hard
- 删除命令
d
➜ case sed '/^code/d' test.txt
//删除空行
➜ case sed '/^$/d' test.txt