Linux 运维实战系列——文本处理三剑客之一 awk
命令小结awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有很多其他的功能。
作为一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。数据可以来自标准输入、外部文件,或者其他命令的输出。awk 同时支持正则表达式和用户自定义函数。
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息(ctrl+c/v的,未考证😳)。
实战经验入门指定输出列awk 处理文件是以记录为单位的,它会一条记录一条记录地遍历文件并进行处理。$0 代表的是一条记录,也就是student.txt 文件中的 ...
Linux 运维实战系列——文本处理三剑客之一 sed
命令小结sed 是 stream editor的简写,中文称之为“流编辑器”。
sed命令是一个面向行处理的工具,以“行”为处理单位,针对每一行进行处理,处理后的结果默认输出道标准输出(STDOUT)。
基本格式为 sed command file
command部分:指针对每行的内容所要进行的处理,为该命令的精髓所在,共分为两块知识:一块是范围设定,一块是动作处理。
file部分:指要处理的文件,如果忽略file参数,则sed会把标准输入作为处理对象
实战经验sed 的工作原理sed 命令每次处理时,会把要处理的行存储到缓冲区间,接着用sed命令处理缓冲区中的内容,处理完成之后,把缓冲区的内容送往屏幕。接着处理下一行,不断重复,直至文件末尾。这个缓冲区称为 “模式空间”(pattern space)。
工作原理详解见 文章: 《Linux 公社:Linux基础知识:sed命令》
sed实现cut命令的效果想实现 cut -d : -f /etc/passwd 的效果,使用sed 如何操作?主要用到了 sed ‘s/XXX/YYY/‘ 这个用法。
12345678910111213 ...
程序员的编程内功与外功
编程的内功编程通用性的知识
字符串处理
正则表达式
变量与常量
控制语句if-else
循环
函数/方法
类/对象/接口
递归
哈希表
数组
工具类的内功
构建工具 (通用知识)
单元测试 (通用知识)
依赖包管理 (通用知识)
MVC 框架 (通用知识)
代码质量检测 (通用知识)
JSON 和 XML 设计 (通用知识)
代码控制 (通用知识)
IT外的相关知识
数学(离散数学,几何学)
物理
图形处理
图形/UI设计
等等,这些都是可以各种语言内都能交叉使用的共同的知识。这些知识学好了,大部分语言都可以用到,也都能或多或少在项目和应用中体现出来。
编程的外功包括有:
各种编程语言包括C++,javascript,java,php,C#,perl,python等
各种编程环境,.NET, WAMP/LAMP,node.js 等
各种 IDE 和编辑器,notepad++,vim,Visual Studio,Sublime等
各种快捷键
各种包依赖管理器,npm,composer,Nuget
各种版本管理器:git,svn,cvs
各种单元测试工具
各种构建工具
各种MV ...
Linux 运维实战系列——paste 粘贴
命令小结paste单词意思是粘贴。该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反。就是将几个文件的相应行用拼接间隔符(默认是制表符(Tab)) 连接起来,并输出到标准输出。
实战经验1234567891011121314151617[baiyongan@bya paste_test]$ cat p1.txt 123[baiyongan@bya paste_test]$ cat p2.txt abc[baiyongan@bya paste_test]$ paste p1.txt p2.txt 1 a2 b3 c[baiyongan@bya paste_test]$ paste p1.txt p2.txt | sed -n l # 使用制表符进行分隔1\ta$2\tb$3\tc$[baiyongan@bya paste_test]$
行数不同的文件如何拼接1234567891011121314151617181920212223[baiyongan@bya paste_test]$ cat s1.txt abcde[baiyongan@bya paste_t ...
Linux 运维实战系列—— split 拆分
命令小结Linux中,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志。使用 split命令,则可以将一个大文件分割成指定大小的很多个小文件,如果是文本文件,也可以按照行数进行拆分,默认是1000行作为一个拆分单位。
实战经验命令格式与常用选项
split [ -b ] [ -C ] [ - ] [ -l ] [ 要切割的文件 ] [ 输出文件名前缀 ] [ -a ]
-b <字节> :指定按照多少字节进行拆分,也可指定 K,M,G,T单位
-b, –bytes=SIZE
put SIZE bytes per output file
-<行数> 或 -l <行数> :指定每多少行要拆分成一个文件
-l, –lines=NUMBER
put NUMBER lines per output file
输出文件名前缀:设置拆分后的文件的名称前缀,split会自动在前缀后加上编号,默认从aa开始
-a<后缀长度>:默认的后缀长度是2,也就是按照aa、ab、ac这样的格式依此编号
-a, –suffix-length=N
g ...
Linux 运维实战系列—— wc 字数统计
命令小结wc 命令,全称 word count,功能有限,主要是计算一个文件中的字数,单词数和字节数。
直接执行 wc 命令 ,输出信息 依此是 行数 词数 字节数 文件名
实战经验实验素材准备文件如下,使用 UTF-8 编码
可见,第一行12个英文半角字符,“hello world”11个字符,加上行尾符$;
第二行 6个字符,”你好 世界”5个字符,加上行尾符 $。
1234567891011121314151617181920212223[baiyongan@bya wc_test]$ cat wc_test.txt hello world你好 世界[baiyongan@bya wc_test]$ file wc_test.txt wc_test.txt: UTF-8 Unicode text[baiyongan@bya wc_test]$ sed -n l wc_test.txt hello world$\344\275\240\345\245\275 \344\270\226\347\225\214$[baiyongan@bya wc_test]$ [baiyongan ...
Linux 运维实战系列——cut 剪切
命令小结Linux中,cut命令在文件中负责剪切数据,它以每一行为一个处理对象,这种机制和sed命令一样。
实战经验cut的定位依据所谓的定位依据,就是说,应该如何告诉 cut,想要定位到哪一段内容去进行剪切。
cut共接受三类定位方法,其定位依据:
按照字节定位,bytes,用-b选项;
-b, –bytes=LIST
select only these bytes
按照字符定位,characters, 用 -c 选项;
-c, –characters=LIST
select only these characters
按照域定位, fileds,用 -f 选项。
-f, –fields=LIST
select only these fields; also print any line that contains no delimiter character,
unless the -s option is specified
字节定位的技巧如下所示,若要提取每一行的第3,4,5,8位的字符,可以如下 “-b 3-5,8” 操作,且cu ...
Linux 运维实战系列——sort 排序
命令小结Linux中,sort 是非常常用的命令之一,它可以帮助我们进行各种文件和内容的排序,又快又准。
默认情况下,sort是将文件的每一行作为一个单元,进行排序的,其规则是从每行首字符向后,依此按ASCII码值前后顺序进行比较,最后将它们按照升序输出。
实战经验-u 选项消除重复行
-u, –unique with -c, check for strict ordering; without -c, output only the first of an equal run
123456789101112131415161718[baiyongan@bya sort_test]$ cat seq.txt bananaapplepearorangepear[baiyongan@bya sort_test]$ sort seq.txt applebananaorangepearpear[baiyongan@bya sort_test]$ sort -u seq.txt # 重复的pear只显示一次applebananaor ...
命令速查系列——文件的正文处理
文件的正文处理Linux 最大的优点,也许就在于文本操作:通过各种处理(通常是利用管道)将文本文件(或标准输入)转换成所需的格式。所以,可以读取标准输入和写入标准输出的程序都可以用于文本处理。
命令工具
功能简介
grep、egrep、fgrep
在文件中查找与正则表达式匹配的行
cut
从文件中提取列
paste
与cut命令相反,将多个文件视为垂直列,并将其合并到标准输出上
tr
将字符转为其他字符
expand,unexpand
在制表符和空格符之间进行转换
sort
按各种标准对文本行进行排序
uniq
在文件中查找相同的行
tee
复制文件,同时将其输出到标准输出上
awk
通过正则匹配数据,并操作
sed
一种模式匹配引擎,可针对文本行执行各种操作
m4
用来查找文件中的关键字,然后用某些值替代它们
Perl、PHP、Python、Ruby
一些成熟的编程语言
grep
grep [options] pattern [files]
常用选项
-v 只输出与正则表达式不匹配的行
-l 仅输出 ...
Linux 运维实战系列——文本处理三剑客之一 grep
命令小结Linux系统中grep命令是一个可以利用“正则表达式”进行“全局搜索”,并将搜索出的行打印出来的工具。grep全称是Global Regular Expression Print,它的使用权限是所有用户。
grep是Linux中最常用的“文本处理工具”之一,grep与sed、awk合称为Linux中的三剑客。它与egrep和fgrep 实用程序属于同一系列的Unix工具。
实战经验grep、egrep、fgrep三者关系man grep 查询可知:
egrep is the same as grep -E.
其中 -E, –extended-regexp Interpret PATTERN as an extended regular expression (ERE, see below). (-E is specified by POSIX.)
fgrep is the same as grep -F.
其中 -F, –fixed-strings, –fixed-regexpInterpret PATTERN as a list of fixed str ...