【linux进阶】shell 命令之 awk | sed命令详解,带实例

发布时间 2023-05-22 23:14:17作者: 橙子全栈测试笔记

WK 和 Sed 是常用的文本处理工具,可以用来处理文本文件、日志文件等数据。下面将分别介绍 AWK 和 Sed 命令,并提供一些实例。

AWK 命令

AWK 是一种文本处理工具,其名字取自它的三位创始人的姓名:Alfred Aho,Peter Weinberger 和 Brian Kernighan。AWK 命令通常用于从文件或其他输入流中过滤和处理文本行。下面是一些常见的 AWK 命令和示例:

1. awk 的基本语法

Copy Code
awk [-F  field-separator] 'commands' input-file(s)

其中,-F 指定字段分隔符,commands 是需要执行的操作指令,input-file(s) 指定输入文件。

2. 提取某一列

使用 awk 命令可以轻松地从文件的一行中提取出特定的列。例如,我们可以使用以下命令从 /etc/passwd 文件中提取出用户的用户名:

Copy Code
$ awk -F ':' '{ print $1 }' /etc/passwd

在这个命令中,-F ':' 指定了字段分隔符为冒号,{ print $1 } 表示打印每行的第一个字段。

3. 统计行数

我们可以使用 AWK 命令轻松地统计文件的行数。例如:

Copy Code
$ awk 'END { print NR }' /etc/passwd

在这个命令中,NR 表示文件的行数。

4. 过滤行

使用 AWK 命令可以轻松地过滤文件中的行。例如:

Copy Code
$ awk '/root/ { print }' /etc/passwd

在这个命令中,/root/ 表示模式匹配,即匹配所有包含 "root" 的行,并将其打印出来。

5. 格式化输出

AWK 命令可以格式化输出文本。例如:

Copy Code
$ awk -F ':' '{ printf "User: %s\tUID: %s\n", $1, $3 }' /etc/passwd

在这个命令中,printf 命令用于格式化输出打印文本。%s 表示字符串格式,\t 表示制表符,\n 表示换行符。

Sed 命令

Sed(Stream Editor)是一种基于行的流编辑器,是一种非交互式的文本编辑器。Sed 命令通常用于对文本流进行转换和编辑。下面是一些常见的 Sed 命令和示例:

1. sed 的基本语法

Copy Code
sed [选项] 'command' fileName

其中,command 是需要执行的命令,fileName 是需要处理的文件。

2. 替换字符串

使用 Sed 命令可以轻松地替换文件中的字符串。例如:

Copy Code
$ sed 's/old/new/g' file.txt

在这个命令中,/old/new/g 表示将 "old" 替换为 "new",g 表示全局匹配。

3. 插入文本

Sed 命令可以用于在文件的某个位置插入文本。例如:

Copy Code
$ sed '2i This is a new line.' file.txt

在这个命令中,2i 表示在第二行之前插入一行文本。

4. 删除行

我们可以使用 Sed 命令轻松地从文件中删除特定的行。例如:

Copy Code
$ sed '/old/d' file.txt

在这个命令中,/old/d 表示删除文件中包含 "old" 的行。

5. 执行多条命令

Sed 命令可以执行多条命令来编辑文件。例如:

Copy Code
$ sed -e 's/old/new/' -e 's/foo/bar/' file.txt

在这个命令中,使用了 -e 选项来指定需要执行的多个命令。这个例子中,首先将 "old" 替换为 "new",然后将 "foo" 替换为 "bar"。

综上所述,AWK 和 Sed 命令是非常有用的文本处理工具,可以帮助我们完成许多文本处理任务。