【Linux】文件格式化与数据处理(printf/awk)

简介: 【Linux】文件格式化与数据处理(printf/awk)

序言

如你对Linux的文章感兴趣,可以点击图像查阅更多的文章

1. 格式化打印printf

参数


\a 警告声音输出


\b 倒退键


\f 清除屏幕


\n 输出新的一行


\r 即enter按键


\t 水平的[tab]键


\v 垂直的 [tab] 键


%ns那个n是数字,s代表string,亦即多少个字符;


%ni那个n是数字,i代表integer,亦即多少整数码数;


%N.nf那个n与N都是数字,f代表floating(浮点),如果有小数码数假设我共要十个位数,但小数点有两位,即为%10.2f


2. 实例


把这一份数据保存成printf.txt然后实战


Name Chinese English Math Average


DmTsai 80 60 92 77.33


VBird 75 55 80 70.00


Ken 60 90 70 73.33


这是直接查看出来的数据


image.png


进行数据处理


参数:%s是显示不固定个数字符,参数本身是%ns,这个n也就代表的多少个字符


参数:t 水平的【tab】按键


printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)


这个就是以你为chinese的长度太长了,导致english中间多了一个tab来将数据排列整齐


image.png


所以我们需要给每个字段设置固定的长度


printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt | grep -v Name);


image.png


2. 解释上边案例的最后


这一串格式看的是有点多,我们来一个一个解释,格式分为五个字段


%10s代表的是长度为10个字符的字串字段


%5i代表的是长度为5个字符的数字字段


至于那个%8.2f代表长度为8个字符的具有小数点的字段,其中有两个小数点有两个字符宽度


grep -v name代表除了name这一行的所有行


image.png


说明$8.2f的意义,还有为什么是%5i


字符宽度12345678  


%8.2f意义:00000.00


如上所述,全部的字符宽度仅有8个字符,整数部分占有5个字符,小数点占一位,小数点后的位数则有俩位


注意一点,这里的字符不是指的是真实数据的字符,而是需要所占的字符个数,是tab之间的距离可以这么理解


2. 在说一个简单的知识点,就是在上图中,我们可以看到所有内容都是向右对齐,这是默认时的显示,但是如果想让一个字符向左对齐的话, 那么也是很简单的,就是给字符前面加行一个    ‘-’ 即可


image.png


3. awk:数据处理工具


awk是一个数据处理工具,想较于sed长长用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理。因为awk适合处理小型的数据处理


取出登录者的信息


last -n 5;


image.png


2. 取出账号与ip,并且以【tab】隔开


参数:$1就指的是第一栏,那么$3就指的是第三栏了


last -n 5 | awk '{printf $1 "\t" $3}';


image.png


3. 使用awk知道我们的数据有几行,有几栏


参数:NR是目前awk处理的第几行


NF是拥有的字段数


last -n 5 | awk '{print $1 "\t lines:" NR "\t column:" NF}';


image.png


4. 我要查阅,第三栏小于 10以下的数据,并且仅列出账号与第三栏


参数:{FS=":"} 代表是以:为分隔符


cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'

image.png



5. 其实这个可以看到第一行并没有显示出来


这是因为我们读入第一行的时候,那些变量$1,$3默认还是以空白键为分割的,所以虽然我们定义了FS,但是只能在第二行生效,这种情况我们可以预先设置awk的变量,利用BEGIN这个关键字


cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t" $3}';


这样就可以把第一行打印出来了

image.png

相关文章
|
14天前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
66 34
|
9天前
|
Linux
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
35 14
|
4天前
|
Linux Shell
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
20 3
|
2月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
97 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
320 14
|
2月前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
178 6
|
2月前
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
65 7
|
2月前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
507 6
|
3月前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
61 5
|
2月前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。