技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

Linux Sed 教程:追加、插入、替换和计算文件行数

作者:admin    时间:2021-12-27 7:29:32    浏览:

Linux Sed 提供了许多命令来对文件中的行执行许多操作。在本文中,让我们看看如何在文件中追加、插入、替换行以及如何获取文件的行号。

Linux Sed 教程:追加、插入、替换和计算文件行数

让我们首先创建将在下面提到的所有示例中使用的 test.txt 文件。

$cat test.txt
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

使用 sed 命令追加行

sed 提供了命令“a”,它在每行之后附加一行地址或模式。

句法:

#sed 'ADDRESS a\
Line which you want to append' filename

#sed '/PATTERN/ a\
Line which you want to append' filename

Sed 追加示例 1

在文件的第 3 行之后添加一行。

在第 3 行之后添加“这是一个测试”这一行。sed “a” 命令在匹配后插入行。

$ sed '3 a\
> 这是一个测试' test.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
这是一个测试
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed 追加示例2

在匹配模式的每一行之后追加一行。

下面的 sed 命令将在与模式“Sysadmin”匹配的每一行之后添加“Linux Scripting”行。

$ sed '/Sysadmin/a \
> Linux Scripting' test.txt

Linux Sysadmin
Linux Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Linux Scripting

Sed 追加示例3

在文件末尾追加一行。

以下示例在文件末尾附加“网站设计”行。

$ sed '$ a\
> 网站设计' test.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
网站设计

使用 sed 命令插入行

sed 命令“i”用于在具有范围或模式的每一行之前插入一行。

句法:

#sed 'ADDRESS i\
Line which you want to insert' filename

#sed '/PATTERN/ i\
Line which you want to insert' filename

Sed 插入示例 1

在该行的第 4 行之前添加一行。

在第 4 行之前添加一行“这是一个测试”。“a”命令在匹配之后插入行,而“i”在匹配之前插入。

$ sed '4 i\
> 这是一个测试' test.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
这是一个测试
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed 插入示例 2

在有模式的每一行之前插入一行。

下面的 sed 命令将在与名为“Sysadmin”的模式匹配的每一行之前添加一行“Linux Scripting”。

$ sed '/Sysadmin/i \
> Linux Scripting' test.txt

Linux Scripting
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Linux Scripting
Windows- Sysadmin, reboot etc.

Sed 插入示例 3

在文件的最后一行之前插入一行。

在文件的最后一行之前附加一行“网站设计”。

$ sed '$ i\
> 网站设计' test.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
网站设计
Windows- Sysadmin, reboot etc.

使用 sed 命令替换行

sed 中的“c”命令用于用新的给定行替换与模式或范围匹配的每一行。

句法:

#sed 'ADDRESS c\
new line' filename

#sed '/PATTERN/ c\
new line' filename

Sed 替换示例 1

替换文件的第一行。

下面的命令用“这是一个测试”替换文件的第一行。

$ sed '1 c\
> 这是一个测试' test.txt

这是一个测试
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed 替换示例 2

替换与模式匹配的行。

将具有模式“Linux Sysadmin”的每一行替换为“Linux Sysadmin – Scripting”。

$ sed '/Linux Sysadmin/c \
> Linux Sysadmin - Scripting' test.txt

Linux Sysadmin - Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed 替换示例 3

替换文件的最后一行。

下面给出的 sed 命令将文件的最后一行替换为“文件的最后一行”。

$ sed '$ c\
> Last line of the file' test.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
文件的最后一行

使用 sed 命令打印行号

“=”是 sed 中的一个命令,用于将当前行号打印到标准输出。

句法:

#sed '=' filename

上面的发送命令语法在第一行打印行号,在下一行打印文件中的原始行。

sed '=' 命令只接受一个地址,所以如果你想打印一系列行的行号,你必须使用花括号。

句法:

# sed -n '/PATTERN/,/PATTERN/ {
=
p
}' filename

Sed 行号示例 1

查找包含模式的行号。

下面的 sed 命令打印与模式“Databases”匹配的行号。

$ sed -n '/Databases/=' test.txt

输出:

2

Sed 行号示例 2

行号的打印范围。

打印从模式“Oracle”到“Productivity”的行匹配的行号。

$ sed -n '/Oracle/,/Productivity/{
> =
> p
> }' test.txt

 输出:

2
Databases - Oracle, mySQL etc.
3
Security (Firewall, Network, Online Security etc)
4
Storage in Linux
5
Productivity (Too many technologies to explore, not much time available)

Sed 行号示例 3

打印文件中的总行数。

$ sed -n '$=' test.txt

输出:

6

 本文介绍了如何在文件中追加、插入、替换行以及如何获取文件的行数。

您可能对以下文章也感兴趣

标签: sed  linux技术  linux教程  
  • IT热文
  • 站长推荐