IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(2)去重统计排序 -> 正文阅读

[系统运维]Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(2)去重统计排序

去年提前批我投了京东、字节和百度,一面,二面都被问到了awk,如果你会,并且还很熟悉,那肯定算是一个加分项了!好感度up up up!

基本原理本篇不再赘述。请阅读:
总结了200篇面经中的awk面试题,看看面试官会问什么!——原理篇
总结了200篇面经中的awk面试题,看看面试官会问什么!——实例篇

可能看完原理篇你还不是太清晰要怎么用,但是看完实例,绝对都能懂了!!

  • 重复的实例,代码只写一遍,看的时候举一反三。
  • 涉及到的其他命令,在第一次出现时会进行说明。
  • 有需要注意的格式、重点等等,在讲到具体实例的时候会附上说明。

本篇讲解——实例篇(2)去重统计排序

log.txt,统计一个文件中"ABCD"出现的次数(grep或awk)

用grep:

grep -o "ABCD" test.txt|wc -l

grep用于查找字符串,常与|catps一起使用

grep -o只打印匹配到的字符,如果一行里面有多个匹配的字符串必须用-o

wc命令使用-l统计行数

用awk,(文件内容没有@@@)

awk '{s+=gsub("ABCD","@@@")}END{print s}' log.txt #用替换来解决

awk 'BEGIN{RS="111"}END {print --NR}' log.txt #用行分隔符来解决,注意出现的次数为行号-1

gsub(r,s [,t])全局替换,字符串t中所有与正则表达式r匹配的项都被替换为字符串s。函数返回值为替换的数量。如果省略t,则默认对$0(全部内容)进行替换。

RS:Record Separator,记录行分隔符;找到某某标志,让每个某某后的内容重新变成一行!!

读入一个文件,文件每行按空格分开字符串,统计字符串a的个数——快手二面

cat test.txt | awk -F" " '{print $0}' |grep -o "a"| wc -l

awk统计日志访问时间——58同城一面。

如test.log如下:

123.125.72.61 - - [05/Dec/2018:00:00:02 +0000] "GET /index?page=1 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .
141.1.142.111 - - [05/Dec/2018:00:00:02 +0000] "GET /index?page=61 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .
123.125.72.61 - - [05/Dec/2018:00:00:03 +0000] "GET /yoyoketang?page=62 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .
141.1.142.131 - - [05/Dec/2018:00:00:03 +0000] "GET /blog?page=3 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .
awk -F["["," "] '{print $5}' test.log| sort |uniq -c
#输出为:
      2 05/Dec/2018:00:00:02
      2 05/Dec/2018:00:00:03

Linux uniq命令用于检查及删除文本文件中重复出现的行列

sort命令和uniq命令配合使用可以去重,先用sort命令排序,然后uniq命令去重:先排序后去重

uniq只能对连续重复行进行去重,所以必须搭配sort命令使用

-c--count 在每行行首加上本行在文件中出现的次数

统计当前目录下(包含子目录) java文件的代码总行数——字节电商一面

find ./ -name "*.java"|awk 'END{print NR}'

find命令用于查找文件和目录,-name "*.txt" 表示文件名为.txt结尾的所有文件,*表示匹配所有

./是当前目录

参数代换命令:xargs。xargs表示展开find获得的结果,使其作为awk的参数

NR Number of Record 当前行的编号(行号、从1开始),到目前为止的行数(会按照文件累加)

删除一个文本文件中重复的行,且不改变原文件顺序

awk '!visited[$0]++' filename

维护一个关联数组visited,对于文件的每一行,如果这行出现的次数为0,则!0=1(True),visited[当前行]值+1,并打印这行;否则值加1,取反后为False,不打印这行。

++优先级比!

给了一个10行10列数据,都是以逗号分隔,其中第五列数据可能有重复的,统计第五列不同数据出现次数——上海美团C++一面

类似上述awk统计日志访问时间问题。

awk -F"," '{print $5}' data.txt| sort |uniq -c

Linux uniq命令用于检查及删除文本文件中重复出现的行列

sort命令和uniq命令配合使用可以去重,先用sort命令排序,然后uniq命令去重:先排序后去重

uniq只能对连续重复行进行去重,所以必须搭配sort命令使用

-c--count 在每行行首加上本行在文件中出现的次数

写Linux命令,给定下面的文件,对file和dir按照第二列分别排序,输出最大的那个——字节后端一面

假设test.txt文件内容使用&分隔

file&12
dir&14
file&13
dir&15
cat test.txt | awk -F"&" '$1=="file"{print $1,$2}'|sort -k 2 -r|head -1
#输出为: file 13

cat test.txt | awk -F"&" '$1=="dir"{print $1,$2}'|sort -k 2 -r|head -1
#输出为: dir 15

sort命令可以给文本进行排序,操作的是行。-k指定列,-r:反向排序(从大到小)

互联网求职&交流 优质资源共享

手里资源比较多,字节、百度、京东、微软、阿里、商汤、携程等,建了个资源共享圈子,有资源的or有需求的

戳下方公众号名片,选择求职-交流群~欢迎大佬们捧场,给予多多资源!

  • 用数据报告,洞悉行业前沿。不定期分享行业最新研究报告、学习资料等优质资源
  • 机会多多,各种一手内推资源,招聘信息。涵盖校招(春招秋招,提前批)、社招、实习(暑期实习,日常实习)
  • 求职经验,面试总结,八股文讲解,技术干货,等资料共享
    在这里插入图片描述

感谢您的关注,欢迎交流。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:45:38  更:2022-05-11 16:46:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:33:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码