sed与grep练习题

第1章 练习题                

第1题 取得/etc/hosts 文件的权限

如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r--  为 644,要求使用命令取得644 这样的数字。

 方法一 awk 指定分隔符

[root@node2 ~]# stat /etc/hosts |awk -F "[0/]" 'NR==4{print $2}'
644

方法二 stat  -c%a

[root@node2 ~]# stat -c%a /etc/hosts
644

第2题 目录的硬链接数                  

linux 下通过 mkdir 命令创建一个新目录/clsn/ett,它的硬链接数是多少,为什么?

如果在/clsn/ett下面再创建一个目录 test。再问/clsn/ett 的硬链接数是多少?为什么。

新目录的硬链接数为2

[root@node2 ~]# mkdir /clsn/ett -p
[root@node2 ett]# ls -ldi /clsn/ett/
651845 drwxr-xr-x. 2 root root 6 12月  2 10:38 /clsn/ett/

目录下的硬链接数为 2+下级目录数

[root@node2 ett]# mkdir dir01/
[root@node2 ett]# ls -ldi /clsn/ /clsn/. /clsn/ett/..
50974252 drwxr-xr-x. 3 root root 17 12月  2 10:38 /clsn/
50974252 drwxr-xr-x. 3 root root 17 12月  2 10:38 /clsn/.
50974252 drwxr-xr-x. 3 root root 17 12月  2 10:38 /clsn/ett/..

第3题 取出ip地址                      

执行命令取出 linux中 eth0 的 IP地址。

方法一 awk

[root@node2 ett]# ifconfig ens33|awk -F "[ :]+" 'NR==2{print $3}'
192.168.1.223

方法二 grep

[root@node2 ett]# ifconfig ens33|egrep  "([0-9]{1,3}\.?){4}" -o |head -3|tail -1
192.168.1.223

内容在同一行输出                        

在一个命令上加什么参数可以实现下面命令的内容在同一行输出。

-n  不输出每行行尾的回车

-e  让echo支持 \n \t  转移字符系列

\n  换行

\t   tab键

[root@node2 scprits]#  echo -n "123" ; echo "223"
123223
[root@node2 scprits]# echo -n "123"
123[root@node2 scprits]# echo -e "123\n"
123

[root@node2 scprits]#  echo -ne "123\n"
123

date相关 时间同步                        

 请给出如下格式的 date 命令 例:19-12-02。在给出实现按周输出 比如:周六输出为 6,请分别给出命令。

 %F 与 %Y-%m-%d 相同

[root@node2 scprits]# date +%F
2019-12-02
[root@node2 scprits]# date +%Y-%m-%d
2019-12-02

时间

 %H:%M:%S 与 %T相同

[root@node2 scprits]# date +%T
15:52:42
[root@node2 scprits]# date +%H:%M:%S
15:52:50

时间和周数

 %w 表示周

[root@node2 scprits]# date +%F_%w
2019-12-02_1

手动设置系统日期

[root@node2 scprits]# date -s "20191202 15:55:00"
2019年 12月 02日 星期一 15:55:00 CST

自动同步系统时间

[root@node2 scprits]# ntpdate  ntp1.aliyun.com
 2 Dec 15:53:46 ntpdate[5099]: step time server 120.25.115.20 offset -112.993154 sec

环境变量问题                         

 当从root用户切到普通用户时,执行ifconfig会提示。

 -bash: command not found.

运行目录的过程

 先去PATH找

找到   运行命令解释器 shell

找不到 提示 command not found

永久修改 PATH

PATH 内容放到/etc/profile 文件最后

soucre  /etc/profile 让它生效

打印三天前的日期格式                      

-d "-3day" 表示三天前

-d "3day"  表示三天后

[root@node2 scprits]# date +%F
2019-12-02
[root@node2 scprits]# date -d "-3day" +%F
2019-11-29
[root@node2 scprits]# date -d "3day" +%F
2019-12-05

已知test.txt 文件内容为:

[root@node2 scprits]# cat test.txt 
clsn

xizi

xiaochao

请问如何把文件中的空格过滤掉。

方法一 grep

[root@node2 scprits]# grep -v "^$" test.txt
clsn
xizi
xiaochao
-v 排除 ^$ (空行)

方法二 awk

[root@node2 scprits]# awk '!/^$/' test.txt
clsn
xizi
xiaochao
'!/^$/' 排除空行

方法三 sed

[root@node2 scprits]# sed '/^$/d' test.txt 
clsn
xizi
xiaochao
'/^$/d' 排除空行

sed与awk

awk '找谁{干啥}'

sed '找谁干啥' 

  请使用 grep或 egrep 正则匹配的方式过滤文件test.txt出前两行内容

+ 表示前一个字符出现一次或一次以上。

[root@node2 scprits]# cat test.txt 
clsn

clssssn

test
[root@node2 scprits]# egrep "c+l+s+n" test.txt 
clsn
clssssn

排除以t开头的


[root@node2 scprits]# grep -iv "^t" test.txt 

clsn

clssssn

排除以t结尾的

[root@node2 scprits]# grep -v "t$" test.txt 
clsn

clssssn

请描述下列路径的内容是做什么的?

/var/log/messages         系统普通日志

/var/log/secure          用户登陆日志

/etc/fstab                开机自动挂载

/etc/profile              配置别名 环境变量

/etc/spool/cron/root      定时任务

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-12-02 10:52  星火撩原  阅读(303)  评论(0编辑  收藏  举报