技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

Linux Sed 教程:追加、插入、替換和計算文件行數(shù)

作者:admin    時間:2021-12-27 7:29:32    瀏覽:

Linux Sed 提供了許多命令來對文件中的行執(zhí)行許多操作。在本文中,讓我們看看如何在文件中追加、插入、替換行以及如何獲取文件的行號。

Linux Sed 教程:追加、插入、替換和計算文件行數(shù)

讓我們首先創(chuàng)建將在下面提到的所有示例中使用的 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

在文件末尾追加一行。

以下示例在文件末尾附加“網(wǎng)站設(shè)計”行。

$ sed '$ a\
> 網(wǎng)站設(shè)計' 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.
網(wǎng)站設(shè)計

使用 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

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

在文件的最后一行之前附加一行“網(wǎng)站設(shè)計”。

$ sed '$ i\
> 網(wǎng)站設(shè)計' 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)
網(wǎng)站設(shè)計
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 中的一個命令,用于將當(dāng)前行號打印到標(biāo)準(zhǔn)輸出。

句法:

#sed '=' filename

上面的發(fā)送命令語法在第一行打印行號,在下一行打印文件中的原始行。

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

打印文件中的總行數(shù)。

$ sed -n '$=' test.txt

輸出:

6

 本文介紹了如何在文件中追加、插入、替換行以及如何獲取文件的行數(shù)。

您可能對以下文章也感興趣

標(biāo)簽: sed  linux技術(shù)  linux教程  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */