1. 文件查看—{cat,tac,rev,more,less,head,tail,tailf}

1. 文件查看—{cat,tac,rev,more,less,head,tail,tailf}

---------------------------------------- cat [OPTION]... [FILE]... -E:显示行结束符$;可用于判断文章中空白部分 -n:对显示出的每一行进行编号 -A:显示所有控制符;可用于判断文章中的所有空白部分(非打印字符等等) -b:非空行编号 -s:压缩连续的空行成一行 ---------------------------------------- tac : 把行数颠倒过来,但是每行的内容不变,进行显示 也就是最后一行变成第一行这样来显示 ---------------------------------------- rev :每行的行数不变,但是把每行内容全部倒过来显示 第一行还是第一行,但是第一行的内容反过来 ---------------------------------------- more:分页查看文件 more [OPTIONS...] FILE... -d: 显示翻页及退出提示 例:ls -R /etc/ | more ,它翻到最后就退出了 ---------------------------------------- less:一页一页地查看文件或STDIN输出 查看时有用的命令包括: /文本 :搜索 文本 n/N :跳到下一个 或 上一个匹配 less命令是man命令使用的分页器 例:ls -R /etc/ | less ,它可以上下翻页,用q退出 ---------------------------------------- head [OPTION]... [FILE]... -c # 指定获取前#字节 -n # 指定获取前#行 例:cat -n /etc/passwd | head -n 5 - 注:head后面不加选项的话默认是显示前10行 ---------------------------------------- tail [OPTION]... [FILE]... -c # 指定获取后#字节 -n # 指定获取后#行 (也可以缩写为 -# ,省略n只输入行数) -f 跟踪显示文件fd新追加的内容,常用日志监控 相当于 --follow=descriptor -F 跟踪文件名 相当于--follow=name --retry - 注1:tail后面不加选项的话默认是显示后10行 - 注2:-f选项,如果文件被删除掉,如果再创建同名的文件(fd基本上不会相同),修改新的文件内容对它是没有影响的,因为它跟踪的是fd,仍然指向的是旧的文件的数据块的位置 - 注3:-F选项,如果文件被删除掉,如果再创建同名的新的文件,修改新的文件内容它会继续输出显示;因为虽然不是同一个文件但文件名字一样,相当于对新的文件重新进行了它数据块的指向,并显示新的数据块中的内容 ---------------------------------------- tailf 类似tail –f,当文件不增长时并不访问文件
  • 想要取中间的行可以先head再tail

2. 按列抽取文本—{cut}

- cut [OPTION]... [FILE]... -d DELIMITER: 指明分隔符,默认tab -f FILEDS: #: 第#个字段 #,#[,#]:离散的多个字段,例如1,3,6 #-#:连续的多个字段, 例如1-6 混合使用:1-3,7 -c character : 按字符切割,使用规则同上面的fields --output-delimiter=STRING指定输出分隔符

例子:

---------------------------------------- # df |tr -s " " |cut -d" " -f5|tr -d "%" # df |tr -s " " |cut -d" " -f5|cut -d% -f1 # df |tr -s " " "%"|cut -d% -f5 上面三个结果都是: Use 4 0 0 2 0 1 18 1 100 --------------------------------------- 14:35[root@centos7 /data]# ifconfig|head -2|tail -1|tr -s " "|cut -d" " -f3 192.168.36.102 --------------------------------------- 例子:显示文件或STDIN数据的指定列 cut -d: -f1 /etc/passwd cat /etc/passwd | cut -d: -f7 cut -c2-5 /usr/share/dict/words

3. 横向合并:合并两个文件同行号的行到一行—{paste}

说明:按照文件file在paste后面所写的顺序,各个文件的相同的每一行合并成同一行,中间添加一个tab(一个tab的空格长度)分隔,并输出到标准输出中(可以重定向到文件里面去) paste [OPTION]... [FILE]... -d 分隔符 :指定分隔符,默认用TAB -s : 先把后面的每一个单独的file文件的内容中的所有行合成一行; 然后在把这些文件按照file所写的顺序,将每个文件的内容一行一行的显示出来(按照前后顺序),有多少文件合并后也就有多少行 示例: paste f1 f2 f3... paste -s f1 f2...

3.1. 纵向合并:直接用cat命令就可以

比如: cat f1 f2 f3... 这就对文件进行了纵向合并,非常简单;然后可以把结果重定向输出到一个文件中去

4. 收集文本统计数据—{wc}

  • 计数单词总数、行总数、字节总数和字符总数
  • 可以对文件或STDIN中的数据运行
例如: # cat -A wc.txt 123$ feawg$ aa$ # ll wc.txt -rw-r--r-- 1 root root 13 Nov 26 01:01 wc.txt # wc wc.txt 3 3 13 wc.txt 行数 字(单词)数 字节byte数(代表大小) 文件名 常用选项: -l 只计数 行数 -w 只计数 单词总数 -c 只计数 字节总数 -m 只计数 字符总数 -L 显示文件中最长行的长度 例如: 1.查看多少用户 wc -l /etc/passwd 2.查看多少用户登陆 who|wc -l

5. 文本排序—{sort}

  • 把整理过的文本显示在STDOUT,不改变原始文件
  • 注:sort本身也是标准输入,不加选项会让你键盘输入字符,然后ctrl+d就开始排序.
sort [options]... file... 常用选项 -r 执行反方向(由上至下)整理 -R 随机排序 -n 执行按数字大小整理(注意如果不加-n,则默认按照从左往右的数字字符排序) -f 忽略(fold)字符串中的字符大小写 -u (独特,unique),删除输出中的重复行 -t c 选项使用c做为字段界定符 -k X 选项按照使用c字符分隔的X列来整理,能够使用多次 例子: 1. 将用户按照UID从小到大排序 sort -n -t: -k3 /etc/passwd 2. 查看最大的磁盘占用率是多少 df | tr -s " " "%"|cut -d% -f5|sort -nr |head -1 3.取1到94中间的随机数 seq 94 |sort -R |head -1 或者echo {1..94} |tr " " "\n"|sort -R |head -1

6. uniq

  • 注意uniq也是一个带标准输入的命令
  • uniq命令:从输入中删除前后相接的(也就是连续的)重复的行,注意不连续的不删除
uniq [OPTION]... [FILE]... -c: 显示每行重复出现的次数 -d: 仅显示相邻的重复过的行,同时显示结果去掉重复的只保留一行 -u: 仅显示相邻的不曾重复的行 注:连续且完全相同方为重复 常和sort 命令一起配合使用,用于统计同一个用户出现的次数等等: sort userlist.txt | uniq -c 参数举例: # cat uniq.txt a a b c d d a d d c # uniq uniq.txt a b c d a d c # uniq -d uniq.txt a d d # uniq -u uniq.txt b c a c
例如:统计网站访问日志中(以IP地址开头的)同一个用户的访问次数,并按照从多到少的次序排序: 15:05[root@centos7 /data]# sort access_log |cut -d"-" -f1| uniq -c| sort -nr |head 4870 172.20.116.228 3429 172.20.116.208 2834 172.20.0.222 2613 172.20.112.14 2267 172.20.0.227 2262 172.20.116.179 2259 172.20.65.65 1565 172.20.0.76 1482 172.20.0.200 1110 172.20.28.145
问:给你两个文本文件f1,f2,分析两个文本文件中相同的行和不同的行. 答:sort f1 |uniq >f1b 或 sort -u f1 | >f1b sort f2 |uniq >f2b 或 sort -u f2 | >f2b cat f1b f2b |sort |uniq -u : 不同的行 cat f1b f2b |sort |uniq -d :相同的行
统计远程连接到本机的IP数 ss -nt :显示当前远程连接的主机IP和端口号 ss -nt |tr -s " " ":" |cut -d: -f6 |sort|uniq -c |sort -rn

7. 比较两个文件区别—{diff,patch}

  • diff 命令的输出被保存在一种叫做“补丁”的文件中
    • 使用 -u 选项来输出“统一的(unified)” diff格式文件,最适用于补丁文件
  • patch 复制在其它文件中进行的改变(要谨慎使用)
    • 适用 -b 选项来自动备份改变了的文件
diff -u foo.conf foo2.conf > foo.patch :对于foo做哪些改变能成为foo2保存到foo.patch中 patch -b foo.conf foo.patch :对foo文件先做备份,然后对foo文件进行操作,把它变成foo2文件
最后修改日期: 2021年7月7日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。