文本处理工具

时间:2022-11-18 14:38:38

文本处理工具

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