1. basic options | |||||||||||||||||||
sed [options] {command} {input-file} | |||||||||||||||||||
sed -n | sed -n ‘p‘ a.out | 打印a.out文件内容 | |||||||||||||||||
-n: 取消默认打印到屏幕功能 | |||||||||||||||||||
sed -f | |||||||||||||||||||
sed [options] -f {sed-commands-in-file} {input-file} | |||||||||||||||||||
test-script.sed | /^root/ p | ||||||||||||||||||
/^nobody/ p | |||||||||||||||||||
sed -n -f test-script.sed /etc/passwd | 执行test-script.sed中的sed语句 | ||||||||||||||||||
sed -e | sed [options] -e {sed-command-1} -e {sed-command-2} {input-file} | ||||||||||||||||||
sed -n -e ‘/^root/ p‘ -e ‘/^nobody/ p‘ /etc/passwd | |||||||||||||||||||
sed -n \ -e ‘/^root/ p‘ \ -e ‘/^nobody/ p‘ \ /etc/passwd |
逐条执行sed语句(而不必把语句卸载文件中,adhoc分析用) | ||||||||||||||||||
sed ‘{}‘ | |||||||||||||||||||
sed [options] ‘{ | sed-command-1 | ||||||||||||||||||
sed-command-2 | |||||||||||||||||||
}‘ {input-file} | |||||||||||||||||||
sed -n ‘{ | 逐条执行sed语句(而不必把语句卸载文件中,adhoc分析用) | ||||||||||||||||||
/^root/ p | |||||||||||||||||||
/^nobody/ p | |||||||||||||||||||
}‘ /etc/passwd | |||||||||||||||||||
sed scripting flow |
|||||||||||||||||||
read | |||||||||||||||||||
excute | |||||||||||||||||||
repeat | |||||||||||||||||||
|
|||||||||||||||||||
sed ‘p‘ | sed ‘p‘ employee.txt | 屏幕上打印每条语句两次 | |||||||||||||||||
sed -n ‘p‘ employee.txt | 屏幕上打印每条语句一次, 相当于cat | ||||||||||||||||||
sed range(selective lines to execute) |
|||||||||||||||||||
range by comma |
sed -n ‘2 p‘ employee.txt | 只打印第二行 | |||||||||||||||||
sed -n ‘1,4 p‘ employee.txt |
打印第一至四行 | ||||||||||||||||||
sed -n ‘2,$ p‘ employee.txt |
打印第二行到最后一行 | ||||||||||||||||||
range by plus |
sed -n ‘1,+2 p‘ employee.txt |
从第一行开始,再打印紧接着的两行 | |||||||||||||||||
n,+m | |||||||||||||||||||
range by tilde |
n~m | 从第n行开始,每个m行打印 | |||||||||||||||||
n, n+m, n+2m,n+3m,… | |||||||||||||||||||
sed -n ‘1~2p‘ employee.txt |
打印奇数行的内容 | ||||||||||||||||||
Pattern matching |
|||||||||||||||||||
sed -n ‘/Jane/ p‘ employee.txt | 输出包含Jane的行 | ||||||||||||||||||
sed -n ‘/Jane/,4 p‘ employee.txt |
|||||||||||||||||||
输出从第一个包含Jane的行开始,到第四行结束 | |||||||||||||||||||
如果1到4行没有包含Jane 的行,则输出后面包含Jane的行 |
|||||||||||||||||||
sed -n ‘/Raj/,$ p‘ a.txt | 输出从第一个包含Raj的行开始,到最后一行 | ||||||||||||||||||
sed -n ‘/Raj/,/Jane/ p‘ a.txt |
输出从第一个包含Raj的行开始,到紧接的包含Jane的行结束 | ||||||||||||||||||
sed -n ‘/Raj/,+2p‘ a.txt | 输出从第一个包含Raj的行,及紧接着的两行 | ||||||||||||||||||
sed ‘d‘ | patten match 的逆运算 | ||||||||||||||||||
sed ‘2d‘ a.txt | 删除第二行;结果输出出第二行以外的所有行 | ||||||||||||||||||
sed ‘2,$ d‘ a.txt | 删除第二行至最后一行; 输出剩下的行 | ||||||||||||||||||
sed ‘/Manager/ d‘ a.txt | 删除包含Manager的行;输出剩下的行 | ||||||||||||||||||
sed ‘/Jason/,4 d‘ a.txt | 删除第一个包含Jason的行至第四行 | ||||||||||||||||||
如果前四行中没有包含Jason的行,则将删除剩下的行 | |||||||||||||||||||
sed ‘/Raj/,$ d‘ a.txt | 删除从第一个包含Raj的行至最后一行 | ||||||||||||||||||
sed ‘/Raj/, /Jane/, d‘ a.txt |
删除包含Raj的行至后面第一个包含Jane的行 | ||||||||||||||||||
sed ‘/Jason/,+2d‘ a.txt | 删除从包含Jason的行及紧接着的两行 | ||||||||||||||||||
sed ‘/^$/ d‘ a.txt | 删除所有空行 | ||||||||||||||||||
sed ‘/^#/d‘ a.txt | 删除所有注释行 | ||||||||||||||||||
sed ‘w‘ | |||||||||||||||||||
sed ‘w out.txt‘ a.txt | 把a.txt内容写入out.txt | ||||||||||||||||||
sed -n ‘w out.txt‘ a.txt | 直接写入,取消将内容打印到屏幕 | ||||||||||||||||||
sed -n ‘1,4 w out.txt‘ a.txt |
将一至四行,写入到out.txt 文件 | ||||||||||||||||||
sed -n ‘2,$ w out.txt‘ a.txt |
2至最后一行 写入 | ||||||||||||||||||
sed -n ‘1~2 w out.txt‘ a.txt |
1,3,5,7,..行写入 | ||||||||||||||||||
sed -n ‘/Jane/ w out.txt‘ a.txt |
== | sed -n ‘/Jane/ p‘ a.txt > out.txt |
|||||||||||||||||
sed -n ‘Jason,4 w out.txt‘ a.txt |
|||||||||||||||||||
…. | |||||||||||||||||||
sed substitution command |
|||||||||||||||||||
sed ‘[address-range|pattern-range] s/orginal-string/replacement-string/[substitute-flags]‘ input-file |
|||||||||||||||||||
sed ‘s/Manager/Director/‘ a.txt |
用Director替换所有的Manager | ||||||||||||||||||
sed ‘/Sales/s/Manager/Director/‘ a.txt |
|||||||||||||||||||
只对包含Sales的行进行替换 | |||||||||||||||||||
g flag | 默认情况下,替换只替换每一行中第一次出现的pattern,而不是一行中所有的pattern | ||||||||||||||||||
g可以替换所有的pattern | |||||||||||||||||||
sed ‘s/a/A/g‘ a.txt | 将所有的小写字母a替换为大写字母A | ||||||||||||||||||
number flag |
|||||||||||||||||||
sed ‘s/a/A/2‘ a.txt | 每行的第二个小写字母a替换为大写字母A | ||||||||||||||||||
print flag |
sed -n ‘s/John/Johnny/p‘ a.txt |
打印所有被替换后的行 | |||||||||||||||||
w write flag |
sed -n ‘s/John/Johnny/w output.txt‘ a.txt |
||||||||||||||||||
i ignore case flag |
|||||||||||||||||||
sed ‘s/john/Johnny/i‘ a.txt |
|||||||||||||||||||
e excute flag |
execute as shell command | ||||||||||||||||||
file.txt | |||||||||||||||||||
/etc/passwd | |||||||||||||||||||
/etc/group | |||||||||||||||||||
sed ‘s/^/ls -l /e‘ file.txt |
|||||||||||||||||||
== | |||||||||||||||||||
执行 | ls -l /etc/passwd | ||||||||||||||||||
ls -l /etc/group | |||||||||||||||||||
sed substition delimeter |
|||||||||||||||||||
sed ‘s/…/…/‘ a.txt | |||||||||||||||||||
sed ‘s^…^…^‘ a.txt | |||||||||||||||||||
sed ‘[email protected]…@…@‘ a.txt | |||||||||||||||||||
sed ‘s!…!…!‘ a.txt | |||||||||||||||||||
multiple sustitute command affecting the same line |
|||||||||||||||||||
list of command | |||||||||||||||||||
command-1 on the pattern space |
|||||||||||||||||||
command-2 on the newly changed pattern by command-1 |
|||||||||||||||||||
…. | |||||||||||||||||||
sed ‘{ | |||||||||||||||||||
s/Developer/IT Manager/ | |||||||||||||||||||
s/Manager/Director/ | |||||||||||||||||||
}‘ | |||||||||||||||||||
a.txt | |||||||||||||||||||
& get matched pattern |
|||||||||||||||||||
sed ‘s/^[0-9][0-9][0-9]/[&]/g a.txt |
|||||||||||||||||||
101,… | [101],.. | ||||||||||||||||||
102,.. | [102],… | ||||||||||||||||||
sed ‘s/^.*/<&>/‘ a.txt |
所有的行,前加<后加> | ||||||||||||||||||
\1, \2,..single group |
|||||||||||||||||||
sed ‘s/\([^,]*\).*/\1/g‘ a.txt |
|||||||||||||||||||
\([^,]*\) | 匹配到第一个非,的字符 | ||||||||||||||||||
\1 | 用第一个匹配进行替换 | ||||||||||||||||||
sed ‘s/\([^:]\)/\1/g‘ /etc/passwd |
匹配第一个field | ||||||||||||||||||
echo "The Geek Stuff" | sed ‘s/\(\b[A-Z]\)/\(\1\)/g‘ |
|||||||||||||||||||
(T)he (G)eek (S)tuff | |||||||||||||||||||
Chapter 3 |
|||||||||||||||||||
Regular Expression basic |
|||||||||||||||||||
^ | beginning of line | ||||||||||||||||||
$ | end of line | ||||||||||||||||||
. | single character | ||||||||||||||||||
* | zero or more occurences | ||||||||||||||||||
\+ | one or more occurences | ||||||||||||||||||
\? | zero or one occurences | ||||||||||||||||||
[0-9] | character class | ||||||||||||||||||
| | or operation | sed -n ‘/101\|102/p‘ a.txt | |||||||||||||||||
{m} | exactly m occurrences | \{m\} | |||||||||||||||||
{m,n} | m to n occurrences | ||||||||||||||||||
\b | word boundary | ||||||||||||||||||
\n | back reference | ||||||||||||||||||
sed -e ‘s/#.*//; /^$/ d‘ employee.txt |
|||||||||||||||||||
conver Dos file format to Unix file format |
|||||||||||||||||||
sed ‘s/.$//‘ filename | |||||||||||||||||||
Chapter 4 |
|||||||||||||||||||
Sed execution |
|||||||||||||||||||
#sed comments begin with # |
|||||||||||||||||||
to find the sed interpreter, sed file begins with this line |
|||||||||||||||||||
#!/bin/sed -f | |||||||||||||||||||
chmod u+x script.sed | |||||||||||||||||||
./script.sed input.txt | |||||||||||||||||||
first line | |||||||||||||||||||
#!/bin/sed -nf | suppress the output | ||||||||||||||||||
‘-i modifye the input file |
|||||||||||||||||||
sed -i ‘s/John/Johnny/‘ a.txt |
replace and modify a.txt | ||||||||||||||||||
sed -ibak ‘s/John/Johnny/‘ a.txt |
replace and modify a.txt | ||||||||||||||||||
also save a copy of a.txt as a.txtbak |
|||||||||||||||||||
Chapter 5 Addition Sed Commands |
|||||||||||||||||||
a append line |
|||||||||||||||||||
sed ‘[address] a the-line-to-append‘ input-file |
|||||||||||||||||||
sed ‘2 a 203,Jack Johnson,Engineer‘ employee.txt |
第二行后添加 | ||||||||||||||||||
sed ‘$ a 106,Jack Johnson,Engineer‘ employee.txt |
最后一行后添加 | ||||||||||||||||||
sed ‘/Jason/a\ | |||||||||||||||||||
203,Jack Johnson,Engineer\ |
|||||||||||||||||||
204,Mark Smith,Sales Engineer‘ employee.txt |
有Jason的行后添加两行 | ||||||||||||||||||
i-command insert before |
|||||||||||||||||||
sed ‘[address] i the-line-to-append‘ input-file |
|||||||||||||||||||
c-command change line, replace it with the specified |
|||||||||||||||||||
sed ‘[address] c the-line-to-append‘ input-file |
|||||||||||||||||||
sed ‘/Jason/ { | |||||||||||||||||||
a\ | |||||||||||||||||||
204,Jack Johnson,Engineer | |||||||||||||||||||
i\ | |||||||||||||||||||
202,Mark Smith,Sales Engineer |
|||||||||||||||||||
c\ | |||||||||||||||||||
203,Joe Mason,Sysadmin | |||||||||||||||||||
}‘ employee.txt | |||||||||||||||||||
l: print hidden characters |
|||||||||||||||||||
sed -n l a.txt | |||||||||||||||||||
=: show print line number |
|||||||||||||||||||
sed = a.txt | |||||||||||||||||||
sed ‘/Jane/ =‘ a.txt | |||||||||||||||||||
sed -n ‘/Raj/ =‘ a.txt | just show the number of the line containig Raj |
||||||||||||||||||
sed -n ‘$ =‘ a.txt | show the total number of lines |
||||||||||||||||||
y: transform operation |
|||||||||||||||||||
sed ‘y/abcde/ABCDE/‘ a.txt |
字母对应替换: a-A, b-B, c-C, d-D, e-E |
||||||||||||||||||
multiple inputs in command line |
|||||||||||||||||||
sed -n ‘/root/p‘ /etc/passwd /etc/group |
|||||||||||||||||||
q: quit command |
|||||||||||||||||||
r: read from file to print |
|||||||||||||||||||
sed ‘$ r log.txt‘ a.txt | print a.txt & log.txt | ||||||||||||||||||
sed ‘/Raj/ r log.txt‘ a.txt |
print the first line in a.txt containing Raj |
||||||||||||||||||
and then print log.txt | |||||||||||||||||||
simulating unix command |
|||||||||||||||||||
grep -v Jane employee.txt | |||||||||||||||||||
sed -n ‘/Jane/ !p‘ employee.txt |
|||||||||||||||||||
options summary |
|||||||||||||||||||
-n | suprress the default printing |
||||||||||||||||||
-f | sed command in file | ||||||||||||||||||
-e | execute sed command | ||||||||||||||||||
-i | change the original file | ||||||||||||||||||
-l | sepecify the line length | ||||||||||||||||||
-l 20 | |||||||||||||||||||
or ‘l 20‘ | |||||||||||||||||||
n: print current pattern space and fetchs the next line fro mthe input-file |
|||||||||||||||||||
Chapter 6 Sed Hold and Pattern Space Commands |
|||||||||||||||||||
Pattern Space | the internal sed buffer where sed places, and modifies, the line it reas from the input file |
||||||||||||||||||
Hold Space | additional buffer where sed hold temporary data |
||||||||||||||||||
support move data from between Pattern Space and Hold Space |
|||||||||||||||||||
but cannot execute sed command on hold space |
|||||||||||||||||||
Contents is retained from one cycle to the next, not deleted between cycles |
|||||||||||||||||||
x: | swap pattern space with hold space |
||||||||||||||||||
better for the two consecutive lines with one case infor |
|||||||||||||||||||
John Doe | |||||||||||||||||||
CEO | |||||||||||||||||||
Jason Smith | |||||||||||||||||||
IT Manager | |||||||||||||||||||
Raj Reddy | |||||||||||||||||||
Sysadmin | |||||||||||||||||||
sed -n -e ‘{x;n}‘ -e ‘/Manager/ {x;p}‘ a.txt |
|||||||||||||||||||
h | copy pattern space to hold space |
||||||||||||||||||
sed -n -e ‘/Manager/ !h‘ -e ‘/Manager/{x;p}‘ a.txt |
|||||||||||||||||||
/Manager/!h | if line doesn‘t contain Manager, then copy |
||||||||||||||||||
H | append pattern space to hold space |
||||||||||||||||||
sed -n -e ‘/Manager/!h‘ -e ‘/Manager/{H;x;p}‘ a.txt |
|||||||||||||||||||
after appending, it will be line2\nline1 with in two lines |
|||||||||||||||||||
sed -n -e ‘/Manager/!h‘ -e ‘/Manager/{H;x;s/\n/:/;p}‘ a.txt |
|||||||||||||||||||
g | copy hold space to pattern space |
||||||||||||||||||
sed -n -e ‘/Manager/!h‘ -e ‘/Manager/{g;p}‘ |
|||||||||||||||||||
G | append hold space to pattern space |
||||||||||||||||||
sed -n -e ‘/Manager/!h‘ -e ‘/Manager/{x;G;s/\n/:/;p}‘ empnametitle.txt |
|||||||||||||||||||
Chapter 7 Sed Multi-Line Commands and Loops |
|||||||||||||||||||
N | append next line to pattern space |
||||||||||||||||||
sed -e ‘{N; s/\n/:/}‘ a.txt |
|||||||||||||||||||
sed -e ‘=‘ employee.txt | sed -e ‘{N;s/\n/ /}‘ |
print line numbers | ||||||||||||||||||
D | ??????????? | ||||||||||||||||||
loop and branch |
|||||||||||||||||||
:label | defines the label | ||||||||||||||||||
b label | branches the execution flow to the label |
||||||||||||||||||
#!/bin/sed -nf | |||||||||||||||||||
h;n;H;x | |||||||||||||||||||
s/\n/:/ | |||||||||||||||||||
/Manager/!b end | |||||||||||||||||||
s/^/*/ | |||||||||||||||||||
:end | |||||||||||||||||||
p | |||||||||||||||||||
t | ?????????????????/// | ||||||||||||||||||
Sed 整理
时间: 2024-10-12 12:50:06