简单易用的编译器 Nano

文本处理是自动创建或者操作电子文本的理论和实践。文本处理计算机指令有内容提取、内容改变、光标移动……就是内容查找和替换、格式化、过滤文本内容等。
文本无处不在;人工智能和机器学习领域的数据集,很多也是基于文本。将这些数据进行预处理,格式化是文本处理的所在。

Nano 工具

GNU Nano 是一个小巧而友好的文本编辑器。除了文本编辑功能外,还有有些特色功能,如 redo/undo,交互式查找和替换自动缩进等功能。
Nano编辑器已经将过程中用到的快捷键在界面下方列出,其中“^”一般表示<ctrl>键,”M”键一般表示<alt>键。
保存<ctrl>+O
读入<ctrl>+R
退出<ctrl>+X
复制<alt>+U
帮助<ctrl>+G

vim

Vim 是 Vi IMprovede 的缩写。由 Bram Moolenaar 编写的免费开源文本编辑器。1991 年首次发布,主要目标是为编辑器提供增强,与 Vi 一样是以命令为中心的编辑器。Vim 具有高适配性,高扩展性。可以在命令模式、插入模式、可视模式三者之间转换。

模式

开启 Vim 就是命令模式,在此模式下,几乎所有的按键按下后在屏幕上都不会显示,但是可以进行复制粘贴删除等操作。当输入英文“:”后,界面的最下一行,就可以输入命令了。(: 模式有时也叫命令模式)。

插入模式:按下“I”或者“O”,可以由命令模式转换为插入模式。按“Esc”键可以返回命令模式,在插入模式下,可以像普通编辑器那样进行输入。(界面左下角会显示 INSERT)

可视模式:在命令模式下按“V”,可以进入可视模式,按“Esc”返回命令模式。可视模式下移动光标,会以矩形框的形式选中内容,并且可以进行复制粘贴操作。(界面左下角会显示 VISUAL)。

使用工具

  • 打开文件

启动 vim 时,直接跟上需要的文件名:$ vim filename
也可以在命令模式下输入:r filename

  • 退出

不保存文件,退出。若文件未修改,直接 q 否则需要:q!
若保存退出:wq

  • 复制

复制当前行,直接按键:yy
从当前行开始复制 n 行:n yy

  • 粘贴

将光标移动到需要粘贴的地方,内容将会粘贴到光标所在的下一行:p

  • 删除

删除光标所在行:dd
从当前行开始复制 n 行:n dd

  • 定位

使用命令显示符号: : set nu
输入行号 N,后跟 G,可以跳到指定行:n G

  • 查找

在命令模式下 “/ 向前查找”,”? 向后查找”,后面跟上要查找的内容,回车确定: “/
查找下一个:n、查找上一个:N

  • Undo 撤销模式

撤销上一个操作:u
撤销上 n 个操作:n u

  • Redo 重复操作

直接使用 -r 或者
: red

查找工具 grep

grep 是 Global Regular Expression Print,直译后的意思为全局正则表达式打印,顾名思义,此工具是通过使用正则表达式来匹配文件中的内容并且将匹配到的内容打印出来。该工具有一系列的变体,如grep、agrep、egrep…,区别在于是否使用了正则表达式和使用了正则表达式集。

  • 正则表达式

正则表达式实际上是一种模式,使用这种模式可以匹配对应的字符率集,正则表达式可以看作是一个有穷自动机,在 Linux 系统中的很多工具都使用到了正则表达式例如 vim、sed、和awk。

使用工具

语法

grep 命令行参数十分多,主要学习如下使用方法:
grep [-e expression][filename]
-e:指定正则表达式
-i:不区分大小写
-n:显示行号
简单

简单正则表达式

  • [] 匹配指定字符集

将匹配 text1、text2、text3
Is | grep -e text[123]’

  • 字符串精确匹配

精确匹配 “LNE”:
grep -e LINE. viminfo

  • “[^]” 不匹配指定字符集

将不匹配 text1、text2、text3,输出 text4、text5
Is | gerp -e ‘text[^ 123]’

  • “*”重复匹配

将匹配 t,to,too(* 表示 >= 30 个)
Grep -e ‘to+’ text1
将匹配to、too(+表示 > 0 个)

  • “ . “ 匹配任意个单字符

将会输出文件全文
grep -e ‘.’ .viminfo

  • “^” 头部匹配

指示正则表达式必须是头部匹配所有开头的字符串
grep -e ‘^text’text1

  • “$” 尾部匹配

指明正则表达式必须是尾部匹配所有 text 结尾的字符串
grep -e ‘text$’text1

  • 转义字符

经过前述的讨论可知,正则表达式中,使用了很多字符。当匹配的字符串中有这些字符时,转义字符可以解决这个问题,“\”
grep -e ‘\$test$$’test1

  1. grep '[a-zA-Z0-9]\+@[a-zA-Z0-9]\+\.com>'log.txt

流编辑器:sed

工具简介

sed 的英文全称时 Stream Editor,是强大的文本解析转换工具,于1973-1974在贝尔实验室由 LeeE.McMahon 开发。此时已经是已经运行在主流操作系统。
McMahon 创建了一个通用的行编译器,最终变成了SED,SED 的很多语法特性和特性都借鉴了 ed 编译器,设计之初,他就是支持正则表达式,SED 可以从文件中接受类似于管道的输入,可以接受来自标准输入流的,强大的地方是内部实现类似管道的处理方式。
SED 由 自由软件基金组织(FSF)开发和维护,并且随着GUN/Linux 就行分发,因此,通常它也称作GNU SED,对于新手来说,但是一旦掌握了他的语法,就可以用几行代码实现复杂的内容,sed 并不会改变开源文件的内容,是因为 sed 内部维护了缓冲区的缘故,每次操作都是在缓冲区。

命令

命令基本格式

[address[.address]][!]action[arguments]
定位(address)和动作(action)
对输入的每行,检验是否符合第一个命令的位置信息,若且换牌动作,反之不执行,接着检查第二个命令,正常情况下,检查完脚本中所有命令后,会处理当前处理的行输出。

定位

定为可以是行号,,定为可以是正则表达。
/^$/:表示匹配所以的行
两个定为,使用“,”隔开两个位置,表示范围(闭区间)。
2,6:表示第二行到第六行都执行
$ :最后一行

主要动作

替换:s/pattern/replacement/flags
Pattern:匹配的正则表达式
replacement:替换的字符串
flags:n 第几次出现时执行
g:全替换
p:打印

使用工具

i:插入
插入到当前行之前,text为要插入的内容,定为只能有1个。
[address] i text

  1. sed"2i This line is insert by sed"text1

a:追加
插入到当前行之后,text为要插入的内容,定为只能有一个。
address a text
插入到当前行之后,text 为要插入的内容,定为只能有 1 个。

  1. sed*2a This line is appended by sed"text1

语法
  1. send[-n]['command'][file]
  2. send[-n][-f scriptfile][file]

-n:只有输出 p 命令指定的行

文本分析和处理 awk

awk 是一种解析式编程语言,十分强大,专门设计来进行文本处理的,名称时三位创建者(Alfred Aho, Peter Weinberger. and Brian Kernighan)姓的首字母。
GNU/Linux 分发的版本是由自由软件基金会 FSF 维护的,常被叫做 Gawk,Awk 和 Sed,一样都是行编译器,两者工作流程很像,但是 Awk 有很多更加强大的地方。

awk 与 sed 相比:有方便的数值处理与计算、变量和流程控制、访问行之中域、灵活的打印、内置数值和是非数、类似 C 语法。

脚本结构

以 BEGIN 开始,以 END 结束,这两个可选。
每一个语句都是一个 pattern-action 对,和 sed 相似,当输入符合模式时,对相应的 action 才会执行。若省略 Pattern,则动作每一行都执行默认的动作时打印当前行。

  1. BEGIN{action}
  2. pattern{action}
  3. pattern{action}
  4. ......
  5. END{action}

工具使用

运行方式

脚本内容通过命令行参数传递进去

  1. awk'script'input files
  2. awk'{print}'text1
  3. awk -f script_file input_files
  4. awk -f awk1 text1 #脚本文件传进去awk1 即为脚本

模式

正则表达式:/pattert/
将匹配 text1,text2,text3

  1. ls awk "/test[123]/{}print}" #匹配text1,2,3
  2. ls

学习文档错误过多,停止笔记……
待补充……
202204051714