本文共 6133 字,大约阅读时间需要 20 分钟。
Let us review how to print file lines using address and patterns in this first part of sed tutorial.
We’ll be posting several awesome sed tutorials with examples in the upcoming weeks.
This is called as one execution cycle. Cycle continues till end of file/input is reached.
Linux Sed command allows you to print only specific lines based on the line number or pattern matches. “p” is a command for printing the data from the pattern buffer.
To suppress automatic printing of pattern space use -n command with sed. sed -n option will not print anything, unless an explicit request to print is found.
Syntax:# sed -n 'ADDRESS'p filename# sed -n '/PATTERN/p' filename
Let us first create thegeekstuff.txt file that will be used in all the examples mentioned below.
# cat thegeekstuff.txt1. Linux - Sysadmin, Scripting etc.2. Databases - Oracle, mySQL etc.3. Hardware4. Security (Firewall, Network, Online Security etc)5. Storage6. Cool gadgets and websites7. Productivity (Too many technologies to explore, not much time available)8. Website Design9. Software Development10.Windows- Sysadmin, reboot etc.
This will match only Nth line in the input.
# sed -n ‘N’p filename
For example, 3p prints third line of input file thegeekstuff.txt as shown below.
# sed -n '3'p thegeekstuff.txt3. Hardware
M~N with “p” command prints every Nth line starting from line M.
# sed -n ‘M~N’p filename
For example, 3~2p prints every 2nd line starting from 3rd line as shown below.
# sed -n '3~2'p thegeekstuff.txt3. Hardware5. Storage7. Productivity (Too many technologies to explore, not much time available)9. Software Development
M,N with “p” command prints Mth line to Nth line.
# sed -n ‘M,N’p filename
For example, 4,8p prints from 4th line to 8th line from input file thegeekstuff.txt
# sed -n '4,8'p thegeekstuff.txt4. Security (Firewall, Network, Online Security etc)5. Storage6. Cool gadgets and websites7. Productivity (Too many technologies to explore, not much time available)8. Website Design
$ with “p” command matches only the last line from the input.
# sed -n ‘$’p filename
For example, $p prints only the last line as shown below.
# sed -n '$'p thegeekstuff.txt10.Windows- Sysadmin, reboot etc.
N,$ with “p” command prints from Nth line to end of file.
# sed -n ‘N,$p’ filename
For example 4,$p prints from 4th line to end of file.
# sed -n '4,$p' thegeekstuff.txt4. Security (Firewall, Network, Online Security etc)5. Storage6. Cool gadgets and websites7. Productivity (Too many technologies to explore, not much time available)8. Website Design9. Software Development10.Windows- Sysadmin, reboot etc.
PATTERN could be unix regular expression. The below command prints only the line which matches the given pattern.
# sed -n /PATTERN/p filename
For example, following prints the line only which matches the pattern “Sysadmin”.
# sed -n /Sysadmin/p thegeekstuff.txt1. Linux - Sysadmin, Scripting etc.10.Windows- Sysadmin, reboot etc.
# sed -n ‘/PATTERN/,Np’ filename
For example, following prints lines which matches the pattern to Nth line, from input. 3rd line matches the pattern “Hardware”, so it prints from 3rd line to 6th line.
# sed -n '/Hardware/,6p' thegeekstuff.txt3. Hardware4. Security (Firewall, Network, Online Security etc)5. Storage6. Cool gadgets and websites
It prints from the Nth line of the input, to the line which matches the pattern. If the pattern doesnt match, it prints upto end of the input.
# sed -n ‘N,/PATTERN/p’ filename
For example, 4th line matches the pattern “Security”, so it prints from 3rd line to 4th line.
# sed -n '3,/Security/p' thegeekstuff.txt3. Hardware4. Security (Firewall, Network, Online Security etc)
It prints from the line matches the given pattern to end of file.
# sed -n ‘/PATTERN/,$p’ filename
# sed -n '/Website/,$p' thegeekstuff.txt8. Website Design9. Software Development10.Windows- Sysadmin, reboot etc.
It prints the lines which matches the pattern and next N lines following the matched line.
# sed -n ‘/PATTERN/,+Np’ filename
For example, following prints the 5th line which matches the pattern /Storage/ and next two lines following /Storage/.
# sed -n '/Storage/,+2p' thegeekstuff.txt5. Storage6. Cool gadgets and websites7. Productivity (Too many technologies to explore, not much time available)
Prints the section of file between two regular expression (including the matched line ).
# sed -n ‘/P1/,/P2/p’ filename
For example, 5th line matches “Storage” and 8th line matches “Design”, so it prints 5th to 8th.
# sed -n '/Storage/,/Design/p' thegeekstuff.txt5. Storage6. Cool gadgets and websites7. Productivity (Too many technologies to explore, not much time available)8. Website Design
自己补充一个
转载地址:http://ruffb.baihongyu.com/