【Linux】文件格式化与数据处理(printfawk)

【Linux】文件格式化与数据处理(printfawk),第1张

概述序言如你对Linux的文章感兴趣,可以点击图像查阅更多的文章1. 格式化打印printf 参数 a 警告声音输出b 倒退键f 清除屏幕n 输出新的一行r 即enter按键t 水平的[tab]键v 垂直的 [tab] 键%ns那个n是数字,s代表string,亦即多少个字符;%ni那个n是数字,i代表integer,亦即多少整数码... 序言

如你对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

这是直接查看出来的数据

进行数据处理

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

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

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

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

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

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

2. 解释上边案例的最后

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

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

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

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

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

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

字符宽度12345678   

%8.2f意义:00000.00

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

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

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

3. awk:数据处理工具

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

取出登录者的信息

last -n 5;

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

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

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

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

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

NF是拥有的字段数

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

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

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的【Linux】文件格式化与数据处理(printf/awk)全部内容,希望文章能够帮你解决【Linux】文件格式化与数据处理(printf/awk)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1013850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存