码迷,mamicode.com
首页 > 其他好文 > 详细

Sed 整理

时间:2014-07-27 22:35:39      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:style   os   文件   io   for   cti   ar   line   

                             
                             
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                          
  print                           
  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 ‘s@…@…@‘ 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 整理,布布扣,bubuko.com

Sed 整理

标签:style   os   文件   io   for   cti   ar   line   

原文地址:http://www.cnblogs.com/jsquare/p/3871524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!