【鸟哥的linux私房菜-学习笔记】文件的格式化与相关处理

文件的格式化与相关处理

格式化列印: printf

[root@www ~]# printf '列印格式' 实际内容

选项与参数:
关于格式方面的几个特殊样式:
\a 警告声音输出
\b 倒退键(backspace)
\f 清除屏幕 (form feed)
\n 输出新的一行
\r 亦即 Enter 按键
\t 水平的 [tab] 按键
\v 垂直的 [tab] 按键
\xNN NN 为两位数的数字,可以转换数字成为字节。
关于 C 程序语言内,常见的变量格式
%ns 那个 n 是数字, s 代表 string ,亦即多少个字节;
%ni 那个 n 是数字, i 代表 integer ,亦即多少整数码数;
%N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点),如果有小数码数,
假设我共要十个位数,但小数点有两位,即为 %10.2f。

awk:好用的数据处理工具

相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『栏位』来处理,默认的『栏位的分隔符号为 “空白键” 或 “[tab]键” 』。因此,awk 相当的适合处理小型的数据数据处理。awk 通常运行的模式是这样的:

[root@www ~]# awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

例子:

[root@www ~]# last -n 5 <==仅取出前五行

得到:
root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in
root pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41)
root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48)
dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00)
root tty1 Fri Sep 5 14:09 - 14:10 (00:01)

使用

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

得到:
root 192.168.1.100
root 192.168.1.100
root 192.168.1.100
dmtsai 192.168.1.100
root Fri

刚刚上面五行当中,整个 awk 的处理流程是:

读入第一行,并将第一行的数据填入 $0, $1, $2.... 等变量当中;
依据 "条件类型" 的限制,判断是否需要进行后面的 "动作";
做完所有的动作与条件类型;
若还有后续的『行』的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止。

$0 代表『一整列数据』

awk 是『以行为一次处理的单位』, 而『以栏位为最小的处理单位』。

awk 后续的所有动作是以单引号『 ’ 』括住的,由於单引号与双引号都必须是成对的, 所以, awk 的格式内容如果想要以 print 列印时,记得非变量的文字部分,包含上一小节 printf 提到的格式中,都需要使用双引号来定义出来,因为单引号已经是 awk 的命令固定用法了!

awk内建变量

变量名称代表意义
NF每一行 ($0) 拥有的栏位总数
NR目前 awk 所处理的是『第几行』数据
FS目前的分隔字节,默认是空白键

注意事项:

awk 的命令间隔:所有 awk 的动作,亦即在 {} 内的动作,如果有需要多个命令辅助时,可利用分号『;』间隔, 或者直接以 [Enter] 按键来隔开每个命令。

逻辑运算当中,如果是『等於』的情况,则务必使用两个等号『==』!

格式化输出时,在 printf 的格式配置当中,务必加上 \n ,才能进行分行!

与 bash shell 的变量不同,在 awk 当中,变量可以直接使用,不需加上 $ 符号。

文件比对工具

diff:

diff是用在比对两个文件之间的差异的,并且是以行为单位来比对的!一般是用在 ASCII 纯文字档的比对上。 由於是以行为比对的单位,因此 diff 通常是用在同一的文件(或软件)的新旧版本差异上!

cmp:

cmp 主要也是在比对两个文件,他主要利用『位组』单位去比对, 因此,当然也可以比对 binary file。

patch:

我们可以利用 diff 来比对两个文件之间的差异, 进一步利用这个功能来制作修补文件 (patch file)

文件列印准备: pr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值