Sed 整理

                             
                             
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 ‘[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

Sed 整理的相关文章

整理sed实战修改多行配置技巧

整理sed实战修改多行配置技巧,以下部分内容转自老男孩老师博客! http://oldboy.blog.51cto.com/2561410/1610998 老男孩老师有关sed实战技巧分享,来自课堂教学内容实战1.在指定行前插入两行内容,分别为oldboy和oldgirl.提示:被修改的文件内容必须要大于等于2行 1 sed -i '2 ioldboy\noldgirl' sshd_config 2.企业实战例子:快速更改SSH配置(一键完成增加若干参数)   2.1 在文件sshd_confi

linux 四剑客 find 、grep、sed、awk整理

linux 四剑客 find .grep.sed.awk整理 find 主要是用于查找Linux 操作系统的某个文件.目录所在路径,查找出满足条件的文件或者目录的路径 find / -name *.rpm -type d -- ###/:表示是在根目录下进行查找 ###-type:查找的类型,d是目录,f是普通文件 find / -name "con*.log" -exec cp {} /tmp/ \; ####基于 find 查找 Linux 系统以.log 结尾,同时名称以 con

sed文本处理知识点整理

参考资料:http://man.linuxde.net/sed    <鸟哥的私房菜> sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用.sed 后面接的操作,务必以 '' 两个单引号括住.sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非

sed使用整理

-------------sed 查找与替换---------------- 在文本文件离进行替换 在很多 shell 脚本的工作都从通过 grep 或 egrep 去除所需的文本开始.正则表达式查找的最初结果,往往就成了要拿来作进一步处理的"原始数据".通常,文本替换至少需要做一件事,就是讲一些字以另一些字取代,或者删除匹配行的某个部分. 执行文本替换的正确程序应该是 sed----流编辑器. sed 的设计就是用来批处理而不是交互的方式编辑文件.当药做好几个变化的时候,不管是对一个

linux学习:sed与awk与tr用法整理

流编辑器:sedsed 's/pattern/replace_string/' file #从给定文本中的字符串利用正则表达式进行匹配并替换每一行中第一次符合样式的内容sed 's/text/replace/' file > newfile #替换每一行中第一次符合样式的内容并将替换结果重定向到新文件sed -i 's/test/replace/' file #参数-i使用替换每一行中第一次符合样式的内容结果应用于源文件sed 's/pattern/replace_string/g' file

SED命令用法示例整理

修改某行的内容 sed -i  '3s#.*#baseurl=http://mirror.neu.edu.cn/fedora-epel/6/x86_64/#g'  /etc/yum.repos.d/epel.repo 删除指定的行 sed -i  '4d' /etc/yum.repos.d/epel.repo 修改以某字符开头的行的内容 sed -i  '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/g }'  /etc/clamd.conf 清除文件或某段内容中的空格,不包括

sed学习笔记整理

1.sed简介 sed (Stream Editor)是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 定址  可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两

grep,sed,awk用法整理

grep -c 打印出符合要求的行数 -i 忽略大小写              ignore -n 连同符号一起输出          num -v 打印出不符合要求的行 -A2 本行及下面两行 -B2 本行及上面两行 -C2 本行及上下两行 grep ^root passwd    #过滤以root开头的行 grep root$ passwd    #过滤以root结尾的行 grep -i ^root passwd    #不区分大小写,过滤以root结尾的行 grep -E "^root|

sed常用模板整理

sed可以按照指令或脚本编辑文本的linux工具,文本处理功能非常强大,本文总结一些工作中常用的sed模板,方便大家使用 替换 1. 替换文件中所有的 aaa 到 bbb sed -i 's/aaa/bbb/g' /path/to/file 2. 找到文件的修改日期 stat deploy | sed -n '/^Modify.*/p' # 找到 stat deploy | sed -n '/^Modify.*/p' | grep -Eo "....-..-.. ..:..:.." #