LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命

Linux 基金会宣布了一个全新的 LFCS(Linux 基金会认证系统管理员(Linux Foundation Certified Sysadmin))认证计划。这一计划旨在帮助遍布全世界的人们获得其在处理 Linux 系统管理任务上能力的认证。这些能力包括支持运行的系统服务,以及第一手的故障诊断、分析,以及为工程师团队在升级时提供明智的决策。

Linux 基金会认证系统管理员——第一讲

Linux 基金会认证系统管理员——第一讲

请观看下面关于 Linux 基金会认证计划的演示: 

该系列将命名为《LFCS 系列第一讲》至《LFCS 系列第十讲》并覆盖关于 UbuntuCentOS 以及 openSUSE 的下列话题。

第一讲:如何在 Linux 上使用 GNU sed 等命令来创建、编辑和操作文件

第二讲:如何安装和使用 vi/m 全功能文字编辑器

第三讲:归档文件/目录并在文件系统中寻找文件

第四讲:为存储设备分区,格式化文件系统和配置交换分区

第五讲:在 Linux 中挂载/卸载本地和网络(Samba & NFS)文件系统

第六讲:组合分区作为 RAID 设备——创建&管理系统备份

第七讲:管理系统启动进程和服务(使用 SysVinit, Systemd 和 Upstart)

第八讲:管理用户和组,文件权限和属性以及启用账户的 sudo 权限

第九讲:用 Yum,RPM,Apt,Dpkg,Aptitude,Zypper 进行 Linux 软件包管理

第十讲:学习简单的 Shell 脚本编程和文件系统故障排除

重要提示:由于自 2016/2 开始 LFCS 认证要求有所变化,我们增加发布了下列必需的内容。要准备这个考试,推荐你也看看我们的 LFCE 系列。

第十一讲:怎样使用 vgcreate、lvcreate 和 lvextend 命令创建和管理 LVM

第十二讲:怎样安装帮助文档和工具来探索 Linux

第十三讲:怎样配置和排错 GRUB

本文是覆盖这个参加 LFCS 认证考试的所必需的范围和技能的十三个教程的第一讲。话说了那么多,快打开你的终端,让我们开始吧!

处理 Linux 中的文本流

Linux 将程序中的输入和输出当成字符流或者字符序列。在开始理解重定向和管道之前,我们必须先了解三种最重要的I/O(输入和输出(Input and Output))流,事实上,它们都是特殊的文件(根据 UNIX 和 Linux 中的约定,数据流和外围设备(设备文件)也被视为普通文件)。

在 > (重定向操作符) 和 | (管道操作符)之间的区别是:前者将命令与文件相连接,而后者将命令的输出和另一个命令相连接。

# command >file

# command1 | command2

由于重定向操作符会静默地创建或覆盖文件,我们必须特别小心谨慎地使用它,并且永远不要把它和管道混淆起来。在 Linux 和 UNIX 系统上管道的优势是:第一个命令的输出不会写入一个文件而是直接被第二个命令读取。

在下面的操作练习中,我们将会使用这首诗——《A happy child》(作者未知)

cat 命令样例

cat 命令样例

使用 sed

sed 是流编辑器(stream editor)的缩写。为那些不懂术语的人额外解释一下,流编辑器是用来在一个输入流(文件或者管道中的输入)执行基本的文本转换的工具。

sed 最基本的用法是字符替换。我们将通过把每个出现的小写 y 改写为大写 Y 并且将输出重定向到 ahappychild2.txt 开始。g 标志表示 sed 应该替换文件每一行中所有应当替换的实例。如果这个标志省略了,sed 将会只替换每一行中第一次出现的实例。

基本语法:

#sed's/term/replacement/flag'file

我们的样例:

#sed's/y/Y/g' ahappychild.txt > ahappychild2.txt

sed 命令样例

sed 命令样例

如果你要在替换文本中搜索或者替换特殊字符(如 /,\,&),你需要使用反斜杠对它进行转义。

例如,我们要用一个符号来替换一个文字,与此同时我们将把一行最开始出现的第一个 I 替换为 You。

#sed's/and/\&/g;s/^I/You/g' ahappychild.txt

sed 替换字符串

sed 替换字符串

在上面的命令中,众所周知 ^(插入符号)是正则表达式中用来表示一行开头的符号。

正如你所看到的,我们可以通过使用分号分隔以及用括号包裹来把两个或者更多的替换命令(并在它们中使用正则表达式)连接起来。

另一种 sed 的用法是显示或者删除文件中选中的一部分。在下面的样例中,将会显示 /var/log/messages 中从6月8日开始的头五行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15436.html