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 ...
Linux 运维实战系列——echo 打印
命令小结echo命令是 linux 中最基础的命令,也是最常用的命令之一,常用于在终端处进行输入输出验证,而且在写shell脚本的时候,也会被经常用到。
实战经验echo显示字符串与变量显示字符串,直接打印即可,显示变量,用 $引用, 示例如下:
123456789[baiyongan@bya ~]$ echo 'hello world'hello world[baiyongan@bya ~]$ echo "hello world"hello world[baiyongan@bya ~]$ echo hello worldhello world[baiyongan@bya ~]$ str="hello world"[baiyongan@bya ~]$ echo "$str, good night"hello world, good night
用echo -e 显示反斜杠转义转义字符,是shell中的一些有特殊功能的字符,比如\n代表换行,\t代表制表符等。它统一由反斜线 “\“ 开头,后面跟上一 ...