|
|
|
|
|
Linux Sed 提供了許多命令來對文件中的行執(zhí)行許多操作。在本文中,讓我們看看如何在文件中追加、插入、替換行以及如何獲取文件的行號。
讓我們首先創(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
在文件的第 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 命令將在與模式“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
在文件末尾追加一行。
以下示例在文件末尾附加“網(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
在該行的第 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 命令將在與名為“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.
在文件的最后一行之前插入一行。
在文件的最后一行之前附加一行“網(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 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.
替換與模式匹配的行。
將具有模式“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 命令將文件的最后一行替換為“文件的最后一行”。
$ 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 命令打印與模式“Databases”匹配的行號。
$ sed -n '/Databases/=' test.txt
輸出:
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)
打印文件中的總行數(shù)。
$ sed -n '$=' test.txt
輸出:
6
本文介紹了如何在文件中追加、插入、替換行以及如何獲取文件的行數(shù)。