Linux Sed 教程:追加、插入、替换和计算文件行数
作者:admin 时间:2021-12-27 7:29:32 浏览: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
本文介绍了如何在文件中追加、插入、替换行以及如何获取文件的行数。
您可能对以下文章也感兴趣
- 站长推荐