系统管理 类目

合格的运维工程师必须是一名出色的系统管理员,工欲善其事,必先利其器,本博客会介绍一些系统管理相关的技巧与出色的工具。

学习Linux命令(二)

本文是学习Linux命令 (Learn linux command)系列文章的第二篇,在这里会介绍一些让大家平时都会经常用到的命令。注意,命令出现的顺序与重要程度无关。

echo - display a line of text

echo命令是一个shell内置命令,但是你往往可以在系统上找到独立的echo程序,例如我的系统上echo位于/usr/bin下:

[kodango@devops ~]$ which echo
/usr/bin/echo

但是这并不妨碍我们把它当成一个内置命令来对待

echo命令可以用于简单的文本打印:

[kodango@devops ~]$ echo "hello world"
hello world

查看全文

学习Linux命令(一)

Linux下的命令到底有多少,没人清楚。但是有一些命令是大多数系统都包含的,这些命令基本上都包含在GNU Coreutils包中。当然也有一些不包含在Coreutils包中,但是也很基本,很实用的软件,例如Sed,Awk,Grep等等。很多人包括我自己可能只用过其中的部分命令,而且即使对这部分命令,也可能只掌握了部分功能而已。另外一方面,网上有很多初学者,面对这么多的命令往往不知道如何下手,频繁着问如何学习Linux命令,因为他们不知道哪些命令有用,哪些参数有用。我们都是从新手走过来,而且学海无涯,我们依然需要不断的学习与总结,这也是我为什么要写这一系列文章的原因所在。

本系列的名称为学习Linux命令 (Learn linux command),至于学习哪些Linux命令,我自己也说不上来,只能说学习一些有用的命令,让人效率提升的命令,并且是一些基本的命令(系统自带的,所以不包括一些工具命令)。在这个系列里,我和各位一样也是一个学生,共同学习。

查看全文

Sed and awk 笔记之 awk 篇:快速了解 Awk(三)

上一篇中,主要介绍了awk中的一些基础概念,包括记录与字段、表达式、变量、语句等等,本篇在此基础上进一步介绍下awk中的函数。

awk的函数分成数学函数、字符串函数、I/O处理函数以及用户自定义的函数,其中用户自定义的函数我们在上一篇中也有简单的介绍,下面我们一一来介绍这几类函数。

数学函数

查看全文

Sed and awk 笔记之 awk 篇:快速了解 Awk(二)

上一篇文章中,我们从awk使用的命令行语法入手,简单介绍了它是如何使用的。在这一篇里,我们要介绍awk编程语言的基本元素和概念,简单介绍它是如何处理文本的。

记录(Record)与字段(Field)

对于数据库来说,一个数据库表是由多条记录组成的,每一行表示一条记录(Record)。每条记录由多列组成,每一列表示一个字段(Field)。Awk将一个文本文件视为一个文本数据库,因此它也有记录和字段的概念。默认情况下,记录的分隔符是回车,字段的分隔符是空白符,所以文本文件的每一行表示一个记录,而每一行中的内容被空白分隔成多个字段。利用字段和记录,awk就可以非常灵活地处理文件的内容。

查看全文

Sed and awk 笔记之 awk 篇:快速了解 Awk(一)

Sed&awk笔记之Sed篇完成之后,我又偷懒了一段时间,昨天狠狠地给自己抽根鞭子,一定要把这半个坑填上。相信看过Sed篇的同学都清楚,这一系列文章虽名日笔记,事实上有很多我自己个人的理解,加上遣词造句都是我自己的内容,所以转载一定要标明出处,详见文章后方。

Awk是什么

Awk、sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用。sed是一种非交互式且面向字符流的编辑器(a "non-interactive" stream-oriented editor),而awk则是一门模式匹配的编程语言,因为它的主要功能是用于匹配文本并处理,同时它有一些编程语言才有的语法,例如函数、分支循环语句、变量等等,当然比起我们常见的编程语言,Awk相对比较简单。

查看全文

Sed and awk 笔记之 sed 篇:实战

相信大家肯定用过grep这个命令,它可以找出匹配某个正则表达式的行,例如查看包含"the word"的行:

$ grep "the word" filename

但是grep是针对单行作匹配的,所以如果一个短句跨越了两行就无法匹配。这就给我们出了一个题目,如何用sed模仿grep的行为,并且支持跨行短句的匹配呢?

当单词仅出现在一行时很简单,用普通的正则就可以匹配,这里我们用到分支命令,当匹配时则跳转到最后:

/the word/b

查看全文

Sed and awk 笔记之 sed 篇:高级命令(二)

上一篇中介绍了N/D/P三个命令,它们可以形成多行的模式空间,在一点程度上弥补了单行模式空间的不足,我们用sed编辑文本的能力又进了一步。模式空间是sed内部维护的一个缓存空间,它存放着读入的一行或者多行内容。但是模式空间的一个限制是无法保存模式空间中被处理的行,因此sed又引入了另外一个缓存空间——模式空间(Hold Space)。

保持空间

保持空间用于保存模式空间的内容,模式空间的内容可以复制到保持空间,同样地保持空间的内容可以复制回模式空间。sed提供了几组命令用来完成复制的工作,其它命令无法匹配也不能修改模式空间的内容。

操作保持空间的命令如下所示:

名称 命令 说明
保存(Hold) h/H 将模式空间的内容复制或者追加到保持空间
取回(Get) g/G 将保持空间的内容复制或者追加到模式空间
交换(Exchange) x 交换模式空间和保持空间的内容

查看全文

Sed and awk 笔记之 sed 篇:高级命令(一)

上一篇中介绍的基础命令都是面向行的,一般情况下,这种处理并没有什么问题,但是当匹配的内容是错开在两行时就会有问题,最明显的例子就是某些英文单词会被分成两行。

幸运地是,sed允许将多行内容读取到模式空间,这样你就可以匹配跨越多行的内容。本篇笔记主要介绍这些命令,它们能够创建多行模式空间并且处理之。其中,N/D/P这三个多行命令分别对应于小写的n/d/p命令,后者我们在上一篇已经介绍。它们的功能是类似的,区别在于命令影响的内容不同。例如D命令与d命令同样是删除模式空间的内容,只不过d命令会删除模式空间中所有的内容,而D命令仅会删除模式空间中的第一行。

读下一行:N

N命令将下一行的内容读取到当前模式空间,但是下n命令不一样的地方是N命令并没有直接输出当前模式空间中的行,而是把下一行追加到当前模式空间,两行之间用回车符\n连接,如下图所示:

read_newline

模式空间包含多行之后,正则表达式的^/$符号的意思就变了,^是匹配模式空间的最开始而非行首,$是匹配模式空间的最后位置而非行尾。

查看全文

1 2 3 4