linux centos7 行的剖析解读

我们每天操作文件、处理文件,对文件有深刻地理解。而文件由一行一行的内容构成,却对行理解较少,仅有的常规理解是:

文件由零至多行构成;行由不同字符构成。

本文梳理行的作用与功能,加深对行的认识,引出新的视角与场景。

为什么大多数命令、编辑器以行为起点(最小处理单元),是有原因的!

把文件作为最小单元处理,是文件系统、操作系统的事情,不需要太多的人分析、研究。而以字符作为最小单元处理,是ASCII、UTF-8等各类编码的事情,也不需要多少人攻关(实际上是难度太大,与文件系统、操作系统一样,极难更新而有效应用)。而由字符、控制符、单词等如何构成行,行与行如何组合,如何修改行,才是大多数人要关注的工作核心。

可能有人会说,我每天接触的是文件不是行。实际上,我们打开文件,读写文件,更多的是对行的编辑!

修改一个单词,添加一项注释,删除多余空行等等,与其说是对文件的操作,不如说是对行的增删改查处理。

只有对行有了充分理解,深入研究,才能编写出sed命令(非常好用的一款流编辑器),才能开发出awk强大的文本编辑工具,以及高效的vim可视化交互式编辑器。

本文主要从行的层级、结构、属性、功能等方面作一分析,抛砖引玉,提高对行的认知与掌控。

一、行的层级

文件一一行组合(向上)→文件→文件系统

字符一一行构成(向下)←单词、字符、控制符、不可见符号

一一居于中间层级,承接由字符转为文件的繁琐任务。

我们对文件的认识,大多数基于行的状态:

空文件(空行、空字符)

少行文件(单行或少量行数文件,大多由echo命令重定向到文件)

多行文件(编辑代码、开发项目、导入导出、小文件组合等方式创建的文件)

我们透过不同类型的文件,对文件中行的分类,作一归纳。

应用命令、编写代码方面,可分为:

逻辑行

物理行

从行的内容上分类:

空行

非空行

从行的结构上分类:

控制行

代码行

从编译方面分类:

注释行

空行

编译行

二、行的构成

单词、字符、控制符、不可见字符、不可打印字符等

旧行合并新行:

双行变单行,多行变单行

旧行拆分新行

单行变双行、多行、单词、空行

 

三、行的属性

从行的多少(行数),行的长短(字符数),行的组合(交换、拆分、组合)等方面着手,主要属性包括:

可见性、功能性、层次性、分解性、组合性

附加属性包括:

行号   在文件中的位置标记

换行符  行与行的区分方式\n \r\n \r

^开头 每行必须有一个

$结尾 每行可有一个。有时指换行符,有时指具体的某一可见字符,需具体情况具体分析

四、行的功能

1.完成一定任务

2.代表一种形式

3.占居一个位置

对行的功能不同人有不同的认识与理解,行必须具有条理、有序、易读、可编辑等特点,这即是其功能,也是我们的基本要求。

五、行的处理

不同语言、不同编辑器、不同命令等,处理方式不一样,各有千秋,不必强求统一。但对行的处理,不外乎这几种情况:

读―― read按行读取是大多数高级语言、常用编辑器的首选。这是必备操作。

写―― write通常在某一行前或后添加新内容,此类操作也非常多。

存――仅对文件中的一行或几行单独存储为一个文件,也是创建新文件的方法,多种手段可以实现。

改――可用vim,交互式、随改随看的方式,针对具体一行或多行进行修改、处理。可用sed,用指定行范围的模式,用单字母命令c进行修改行内容

删―― d  delete dd 删除不需要的行,或重复行,也是常见操作。

六、行的工具

1.编辑器

vim  对整个文件可见,选择行处理修改等操作具有由行向上到文件的特性

ex  以行为主,单行显示处理

sed  以行为单元,顺序执行每一行。这是典型的按行处理,处理不完不进入下一行。并且处理过的行不能返回去再处理一次(如若仍想处理前面的行,只能重新sed命令)。

awk 以行为平台,具有向下属性。把行分解,各种细分,排列组合,形成新的内容或数据。这是对行的充分利用,彰显行的结构化输出!

2.命令

查看cat  head less

> 覆盖

>> 追加

依据命令行、编辑器、脚本文件对文本处理的殊途同归的原理,介绍讨论很多,此处不再讨论。

小结

有几句话说得好,人们为什么总喜欢按行处理文件?

1.更集中注意力

2.更详细

3.与发行版无关(跨平台)

4.提高生产力

PS:本文所有配图均为查看文件总行数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_36142959

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值