本文共 5954 字,大约阅读时间需要 19 分钟。
his article is part of on-going Unix Sed Tutorial series. In previous articles, we discussed about and.
In this article let us review how to use sed substitute command “s”.
The `s’ command is probably the most important in `sed’ and has a lot of different options.
The `s’ command attempts to match the pattern space against the supplied REGEXP; if the match is successful, then that portion of the pattern space which was matched is replaced with REPLACEMENT.
Syntax:#sed 'ADDRESSs/REGEXP/REPLACEMENT/FLAGS' filename#sed 'PATTERNs/REGEXP/REPLACEMENT/FLAGS' filename
FLAGS can be any of the following
Let us first create thegeekstuff.txt file that will be used in all the examples mentioned below.
$ cat thegeekstuff.txt# Instruction Guides1. Linux Sysadmin, Linux Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux5. Productivity (Too many technologies to explore, not much time available)# Additional FAQS6. Windows- Sysadmin, reboot etc.
Let us review some interesting examples for substitution now.
In the example below, in the output line “1. Linux-Unix Sysadmin, Linux Scripting etc” only first Linux is replaced by Linux-Unix. If no flags are specified the first match of line is replaced.
$ sed 's/Linux/Linux-Unix/' thegeekstuff.txt# Instruction Guides1. Linux-Unix Sysadmin, Linux Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux-Unix5. Productivity (Too many technologies to explore, not much time available)# Additional FAQS6. Windows- Sysadmin, reboot etc.
The below sed command replaces all occurrences of Linux to Linux-Unix using global substitution flag “g”.
$ sed 's/Linux/Linux-Unix/g' thegeekstuff.txt# Instruction Guides1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux-Unix5. Productivity (Too many technologies to explore, not much time available)# Additional FAQS6. Windows- Sysadmin, reboot etc.
In the example below, in the output line “1. Linux Sysadmin, Linux-Unix Scripting etc.” only 2nd occurance of Linux is replaced by Linux-Unix.
$ sed 's/Linux/Linux-Unix/2' thegeekstuff.txt# Instruction Guides1. Linux Sysadmin, Linux-Unix Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux5. Productivity (Too many technologies to explore, not much time available)# Additional FAQS6. Windows- Sysadmin, reboot etc.
The example below has substitution with three flags. It substitutes all the occurance of Linux to Linux-Unix and prints the substituted output as well as written the same to the given the file.
$ sed -n 's/Linux/Linux-Unix/gpw output' thegeekstuff.txt1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.4. Storage in Linux-Unix$ cat output1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.4. Storage in Linux-Unix
In this example, if the line matches with the pattern “-”, then it replaces all the characters from “-” with the empty.
$ sed '/\-/s/\-.*//g' thegeekstuff.txt# Instruction Guides1. Linux Sysadmin, Linux Scripting etc.2. Databases3. Security (Firewall, Network, Online Security etc)4. Storage in Linux5. Productivity (Too many technologies to explore, not much time available)# Additional FAQS6. Windows
This sed example deletes last 3 characters from each line.
$ sed 's/...$//' thegeekstuff.txt# Instruction Gui1. Linux Sysadmin, Linux Scripting e2. Databases - Oracle, mySQL e3. Security (Firewall, Network, Online Security e4. Storage in Li5. Productivity (Too many technologies to explore, not much time availab# Additional F6. Windows- Sysadmin, reboot e
Delete all the comment lines from a file as shown below using sed command.
$ sed -e 's/#.*//' thegeekstuff.txt1. Linux Sysadmin, Linux Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux5. Productivity (Too many technologies to explore, not much time available)6. Windows- Sysadmin, reboot etc.
In this example, there are two commands seperated by ‘;’
$ sed -e 's/#.*//;/^$/d' thegeekstuff.txt1. Linux Sysadmin, Linux Scripting etc.2. Databases - Oracle, mySQL etc.3. Security (Firewall, Network, Online Security etc)4. Storage in Linux5. Productivity (Too many technologies to explore, not much time available)6. Windows- Sysadmin, reboot etc.
Copy the DOS file to Unix, you could find \r\n in the end of each line.
This example converts the DOS file format to Unix file format using sed command.
$sed 's/.$//' filename
In this example, the regular expression given in the sed command matches the html tags and replaces with the empty.
$ sed -e 's/<[^>]*>//g'This is an example.This is an example.
转载地址:http://euffb.baihongyu.com/