博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unix Sed Tutorial6 : Append, Insert, Replace, and Count File Lines
阅读量:2217 次
发布时间:2019-05-08

本文共 6718 字,大约阅读时间需要 22 分钟。

This article is part of the on going Unix sed command tutorial series. In our previous articles we learned sed with single commands — , , and 

Sed provides lot of commands to perform number of operations with the lines in a file.

In this article let us review how to append, insert, replace a line in a file and how to get line numbers of a file.

Let us first create thegeekstuff.txt file that will be used in all the examples mentioned below.

$cat thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.

Append Lines Using Sed Command

Sed provides the command “a” which appends a line after every line with the address or pattern.

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

Sed Append Example 1. Add a line after the 3rd line of the file.

Add the line “Cool gadgets and websites” after the 3rd line. sed “a” command inserts the line after match.

$ sed '3 a\> Cool gadgets and websites' thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Cool gadgets and websitesStorage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot

Sed Append Example 2. Append a line after every line matching the pattern

The below sed command will add the line “Linux Scripting” after every line that matches the pattern “Sysadmin”.

$ sed '/Sysadmin/a \> Linux Scripting' thegeekstuff.txtLinux SysadminLinux ScriptingDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.Linux Scripting

Sed Append Example 3. Append a line at the end of the file

The following example, appends the line “Website Design” at the end of the file.

$ sed '$ a\> Website Design' thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.Website Design

Insert Lines Using Sed Command

Sed command “i” is used to insert a line before every line with the range or pattern.

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

Sed Insert Example 1. Add a line before the 4th line of the line.

Add a line “Cool gadgets and websites” before 4th line. “a” command inserts the line after match whereas “i” inserts before match.

可以写做一行 sed '4 i  Cool Gadets' thegeekstuff.txt

$ sed '4 i\> Cool gadgets and websites' thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Cool gadgets and websitesStorage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.

Sed Insert Example 2. Insert a line before every line with the pattern

The below sed command will add a line “Linux Scripting” before every line that matches with the pattern called ‘Sysadmin”.

$ sed '/Sysadmin/i \> Linux Scripting' thegeekstuff.txtLinux ScriptingLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Linux ScriptingWindows- Sysadmin, reboot etc.

Sed Insert Example 3. Insert a line before the last line of the file.

Append a line “Website Design” before the last line of the file.

$ sed '$ i\> Website Design' thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Website DesignWindows- Sysadmin, reboot etc.

Replace Lines Using Sed Command

“c” command in sed used to replace every line matches with the pattern or ranges with the new given line.

Syntax:#sed 'ADDRESS c\	new line' filename#sed '/PATTERN/ c\	new line' filename

Sed Replace Example 1. Replace a first line of the file

The below command replaces the first line of the file with the “The Geek Stuff”.

$ sed '1 c\> The Geek Stuff' thegeekstuff.txtThe Geek StuffDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.

Sed Replace Example 2. Replace a line which matches the pattern

Replace everyline which has a pattern “Linux Sysadmin” to “Linux Sysadmin – Scripting”.

$ sed '/Linux Sysadmin/c \> Linux Sysadmin - Scripting' thegeekstuff.txtLinux Sysadmin - ScriptingDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Windows- Sysadmin, reboot etc.

Sed Replace Example 3. Replace the last line of the file

Sed command given below replaces the last line of the file with “Last Line of the file”.

$ sed '$ c\> Last line of the file' thegeekstuff.txtLinux SysadminDatabases - Oracle, mySQL etc.Security (Firewall, Network, Online Security etc)Storage in LinuxProductivity (Too many technologies to explore, not much time available)Last line of the file

Print Line Numbers Using Sed Command

“=” is a command in sed to print the current line number to the standard output.

Syntax:#sed '=' filename

The above send command syntax prints line number in the first line and the original line from the file in the next line .

sed ‘=’ command accepts only one address, so if you want to print line number for a range of lines, you must use the curly braces.

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

Sed Line Number Example 1. Find the line number which contains the pattern

The below sed command prints the line number for which matches with the pattern “Databases”

$ sed -n '/Databases/=' thegeekstuff.txt2

Sed Line Number Example 2. Printing Range of line numbers

   一行的写法 :   sed -n  '1,5{=;p}' thegeekstuff.txt

Print the line numbers for the lines matches from the pattern “Oracle” to “Productivity”.

$ sed -n '/Oracle/,/Productivity/{> => p> }' thegeekstuff.txt2Databases - Oracle, mySQL etc.3Security (Firewall, Network, Online Security etc)4Storage in Linux5Productivity (Too many technologies to explore, not much time available)

Sed Line Number Example 3. Print the total number of lines in a file

Line number of the last line of the file will be the total lines in a file. Pattern $ specifies the last line of the file.

$ sed -n '$=' thegeekstuff.txt6

转载地址:http://kyffb.baihongyu.com/

你可能感兴趣的文章
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>
用 LSTM 来做一个分类小问题
查看>>
详解 LSTM
查看>>
按时间轴简述九大卷积神经网络
查看>>
详解循环神经网络(Recurrent Neural Network)
查看>>
为什么要用交叉验证
查看>>
用学习曲线 learning curve 来判别过拟合问题
查看>>
用验证曲线 validation curve 选择超参数
查看>>
用 Grid Search 对 SVM 进行调参
查看>>
用 Pipeline 将训练集参数重复应用到测试集
查看>>
PCA 的数学原理和可视化效果
查看>>
机器学习中常用评估指标汇总
查看>>
什么是 ROC AUC
查看>>