文本处理工具
1.抽取文本的工具:
cat -n f1 //显示行号包括空行在内
cat -b f1 //显示行号(不显示空行的行号)
cat -ns //压缩空行为一行
cat -A //可显示出文件中的空格和换行
tac 文件 //显示文件内容(反向显示)
rev 文件 //在一行中反向显示文本内容
more 命令:对大文件分屏显示;翻看到文件结束自动退出
ls –R /etc/ |more //可分屏显示/etc/下的内容
less命令:也可实现分页显示,翻看到文件结束不退出
head 命令:
ifconfig |head -n2 //显示前两行
head -c //显示前几个字节
-n //显示前几行
tail 命令; // 默认显示后10行
-n //显示后几行
-c //显示后几个字节
-f //能跟踪文件的变化(跟踪文件描述符)删除文件无变化(类似tailf )
-F //能跟踪文件的变化(跟踪文件名)删除文件显示文件已不存在
cut :取出文件的部分内容显示(以列为单位)
-d //指明分隔符
-f //指明哪一列
-c //按字符数切割
–output-delimiter=STRING 文件路径 //指定输出分隔符
df | tr –s “ “ |cut -d” “ -f5 | tr -d%或(df |tr –s “ “ % |cut -d% -f5) //取出第五列
ifconfig ens32 |head -n 2 |tail -n 1 |tr -s ” ” |cut -d” ” -f3 //取出IP地址(centos7)
ifconfig eth0 |head -n 2 |tail -n 1 |tr -s ” ” :|cut -d: -f4 //取出IP地址(centos6)
(centos6中)
service iptables stop //关闭防火墙
chkconfig iptables off //下次开启电脑不自动启动防火墙
(centos7中)
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //下次开启电脑不自动启动防火墙
systemctl enable firewalld //开启防火墙
paste :合并两文件的行内容(横向合并)
-s //所有行合并成一行(一个文件内容放在一行)
-d //指定分隔符
2.分析文本的工具
wc :默认显示有几行,有多少单词,多少字节(统计文本数据)
-l //统计指定文件的行数
-w //统计有多少单词
-c //统计字节数(文件大小)
-m //统计字符数
-L //统计行最长的,打印出其长度
ls |wc //统计当前目录
sort:文本排序
-t //指定分隔符
-k //指定第几列
-n //按数字排序
-r //倒序
-f //忽略大小写
-u //删除重复的内容
-R //随机排序
df |tr -s ” ” % |cut -d% -f5 |sort -nr | head -n 1 //查看利用率的最大值
cat /etc/passwd |cut -d: -f1,3 |sort -t: -k2 –nr //取出用户名和UID并按UID倒序排序
netstat -nt //查看有多少用户正在访问自己主机
uniq :默认将相邻的重复行合并成一行
-c //显示出将几行合并成一行(显示出重复行的次数)
-u //显示不曾重复的行
-d //仅显示重复的行
cat /var/log/httpd/access_log | cut -d” ” -f1 | sort |uniq -c | sort -nr |head //显示出访问次数最多的前十名的IP地址
last :显示日志的命令
diff:比较两个文件内容是否相同
-u //输出统一的diff格式文件,适用于补丁文件
patch -b //适用于自动备份改变了的文件
面试题:
1. 当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
无法cd,无法查看目录下文件的详细属性;不能查看目录文件内容;不能删除文件
2.当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
无法列出目录的文件列表;可以cd;可以删除文件
3.当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
不可修改,不可删除
4.当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
不可修改,可删除
5. 复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
cp /etc/fstab /var/tmp ;chown tomcat:apps fstab
chmod 660 /var/tmp/fstab
6. 误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
cp –r /etc/skel /home/git
chown -R git:git /home/git
chmod 700 /home/git
7. 统计远程主机登录次数的前三个IP
last |tr -s ” ” |cut -d” ” -f3|tr -d “a-zA-Z” |sort -r |uniq -c |head –n3
8. 找出ifconfig “网卡名” 命令结果中本机的IPv4地址
ifconfig ens32 |head -n 2 |tail -n 1 |tr -s ” ” |cut -d” ” -f3 //取出IP地址(centos7)
ifconfig eth0 |head -n 2 |tail -n 1 |tr -s ” ” :|cut -d: -f4 //取出IP地址(centos6)
9、查出分区空间使用率的最大百分比值
df |tr -s ” ” % |cut -d% -f5 |sort -nr | head -n 1
10.查出用户UID最大值的用户名、UID及shell类型
cat /etc/passwd |cut -d: -f1,3,7 |sort -t: -k2 -nr |head -n1
11、查出/tmp的权限,以数字方式显示
stat /tmp |head -n4 |tail -n1 |cut -d/ -f1 |tr -dc [:digit:]
stat -c %a /tmp
12、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
cat /var/log/httpd/access_log | cut -d” ” -f1 | sort |uniq -c | sort -nr
13、在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹
mkdir -p /testdir/dir ; groupadd webs ; groupadd apps ; groupadd dbs
uaeradd tomcat ; useradd mysql ; groupmems -a tomcat -g apps
groupmems -a mysql -g dbs ;
chgrp -R webs /testdir/dir/ ;
chmod g+s /testdir/dir
setfacl -m d:g:apps:rw /testdir/dir ;
setfacl -m d:g:dbs:r /testdir/dir ;
setfacl -m o::- /testdir/dir
或者:mkdir test; useradd a ;useradd b; useradd c;groupmems -a b -g a
chgrp -R a /data/test; chmod -R 760 /data/test ;setfacl -m d:g:c:r /data/test
14、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
getfacl -R /testdir/dir >acl.txt
setfacl -b /testdir/dir
setfacl –restore=/root/acl.txt