1.1 第8题

输出test.txt文件内容时,不包含clsn字符串的命令
文件内容:

  1. [root@znix ~]# cat /data/test.txt
  2. test
  3. liyao
  4. clsn

1.1.1 方法一grep

使用grep命令,找什么就写什么
-v 参数是排除的意思

  1. [root@znix ~]# grep -v "clsn" /data/test.txt
  2. test
  3. liyao

1.1.2 方法二head

使用head显示文件前2行信息(-2参数是显示两行),默认显示前10行。

  1. [root@znix ~]# head -2 /data/test.txt
  2. test
  3. liyao

1.1.3 方法三 sed

sed命令使用单引号
sed命令主要用于删除
‘/clsn/d’ 表示删除clsn这个内容

  1. [root@znix ~]# sed '/clsn/d' /data/test.txt
  2. test
  3. liyao

‘3d’ 表示删除第三行

  1. [root@znix ~]# sed '3d' /data/test.txt
  2. test
  3. liyao

1.1.4 方法四 awk

使用awk查找文本里的clsn/并显示:

  1. [root@znix ~]# awk '/clsn/' /data/test.txt
  2. clsn

前面加!表示排除这个内容,不显示这个内容。

  1. [root@znix ~]# awk '!/clsn/' /data/test.txt
  2. test
  3. liyao

1.2 第9题

用一条命令完成创建目录/clsn/test,即创建/clsn目录及/clsn/test
创建多级目录时需要添加参数 -p 表示创建多级目录。

  1. [root@znix ~]# mkdir -p /clsn/test
  2. [root@znix ~]# ls /clsn/
  3. alex.txt alex.txt.bak clsn.txt test test.sh t.sh
  4. [root@znix ~]# ls -l /clsn/test
  5. total 0

1.3 第10题

已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让系统不提示是否覆盖(root权限下)。

1.3.1 方法一:

\cp 取消别名

  1. [root@znix data]# \cp /mnt/test.txt /tmp/

1.3.2 方法二:

使用命令的绝对路径

  1. [root@znix data]# /bin/cp /mnt/test.txt /tmp/

1.4 第11题

查看ett.txt文件(共100行)内第20到第30行的内容

1.4.1 创建该文件

使用seq命令创建一个100行的文件。

  1. [root@znix ~]# seq 5
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. [root@znix ~]#seq 100 >ett.txt

1.4.2 方法一

使用head找出前30行,通过管道传给tial,再使用tail找出后11行,然后输出。

  1. [root@znix ~]# head -30 ett.txt |tail -11
  2. 20
  3. 21
  4. 22
  5. 23
  6. 24
  7. 25
  8. 26
  9. 27
  10. 28
  11. 29
  12. 30

1.4.3 方法二

使用sed查找20-30行,p表示行数,-n表示取消默认输出。

  1. [root@znix ~]# sed -n '20,30p' ett.txt
  2. 20
  3. 21
  4. 22
  5. 23
  6. 24
  7. 25
  8. 26
  9. 27
  10. 28
  11. 29
  12. 30

1.4.4 方法三

  1. NR表示行,逗号表示2030,两个等于号才是真正的等于
  1. [root@znix ~]# awk 'NR==20,NR==30' ett.txt

&&表示和, => 20大于等于20, <=30 小于等于30

  1. [root@znix ~]# awk 'NR>=20 && NR<=30' ett.txt
  2. 20
  3. 21
  4. 22
  5. 23
  6. 24
  7. 25
  8. 26
  9. 27
  10. 28
  11. 29
  12. 30

1.4.5 方法四

由于这个文件的第20行正好是20。使用grep找到20并输出,-A10 表示输出后面的10行。

  1. [root@znix ~]# grep -A10 "20" ett.txt
  2. 20
  3. 21
  4. 22
  5. 23
  6. 24
  7. 25
  8. 26
  9. 27
  10. 28
  11. 29
  12. 30

1.5 第13题

把/clsn目录及其子目录下所有以扩展名.sh结尾的文件中,文件含.clsn的字符串全部替换为znix。

1.5.1 创建环境

  1. mkdir -p /clsn/test
  2. cd /clsn
  3. echo "clsn">test/del.sh
  4. echo "clsn">test.sh
  5. echo "clsn">t.sh
  6. touch clsn.txt
  7. touch alex.txt

1.5.2 方法一

sed生效需要增加 -i 参数。
使用find找在/clsn 目录下的 文件,名字是.sh 结尾的,使用管道xgras 传给sed,然后使用’s#要被替换的内容#替换的内容#g’ 对 文件进行修改。

  1. [root@znix clsn]# find /clsn/ -type f -name "*.sh"|xargs sed 's#clsn#znix#g' -i
  2. znix
  3. znix
  4. znix

1.5.3 方法二

$( ) 先执行括号里面命令,再执行前面的命令

  1. [root@znix clsn]# sed 's#clsn#znix#g' $(find /clsn/ -type f -name "*.sh")
  2. znix
  3. znix
  4. znix