linux 에서 텍스트 처리 삼 총사

정규 표현 식 (정규 표현 식,):
   :
.       
          :
*            
 :a*b  b,ab aab aaab      acb   
.*          
\?         1  0 
\{m,n\}:          m ,  n 

    :
^:    ,                 
$:    ,                 
^$:   

\ \b:    ,                   

  :

\(\)
     \(ab\)*

  ip  
ifconfig | egrep --color '(\\.){3}\'

grep 텍스트 필터
grep 문법
grep 'pattern' input_file ...
grep:        ,              。
grep 【option】 pattern 【file】
option: 
-i                 
--color                
-v           
-E            
grep -A 2 ‘cord id’ /proc/cpuinfo  
-C         
grep -E = egrep

sed 흐름 편집기
sed 문법
sed :    
        ,             ,  ,     ,         
  :
 sed [option] 'AddressCommand' file ...
option:
      -n     ,         
      -i        
      -e SCRIPF  -e SCRIPT   

Address:
1.StartLine,Endline
  :1,100
$:    
2./RegExp/
     /^root/
3./pattern1/,/pattern2/
         pattern1      ,     pattern2     .  
4.LineNumber
         
5.StartLine,+N
      startLine  ,   N 

Command:
     d:        ;
     p:        
     a\string :           ,   string
          
i\string r FILE w FILE s/pattern/string/ : , g: i: s///: s###, s@@@ \(\), \1, \2 : l..e: like-->liker love-->lover like-->Like love-->Love &:

awk: 보고서 생 성기, 포맷 후 표시
AWK a.k.a. Aho, Kernighan and Weinberger
  :
1、new awk: nawk
2、gawk, awk
  :
# awk [options] 'script' file1 file2, ...
# awk [options] 'PATTERN { action }' file1 file2, ...
awk   :
 、print
print     :
    print item1, item2, ...
  :
1、           ,            ;
2、   item         、       ( $1)、   awk    ;          ,     ;
3、print     item    ,        print $0,   ,        ,     print "";
  :
# awk 'BEGIN { print "line one
line two
line three" }' awk -F: '{ print $1, $3 }' /etc/passwd 、awk 2.1 awk : FS: field separator, , ; RS: Record separator, ; OFS: Output Filed Separator: , ORS:Output Row Separator: , awk -F: OFS="#" FS=":" 2.2 awk : NR: The number of input records,awk ; , ; NF:Number of Field, ; FNR: NR ,FNR ; ARGV: , , awk '{print $0}' a.txt b.txt ,ARGV[0] awk,ARGV[1] a.txt; ARGC: awk ; FILENAME: awk ; ENVIRON: shell ; :awk 'BEGIN{print ENVIRON["PATH"]}' 2.3 gawk , , 、 , 。gawk 。 2.3.1 gawk , : awk 'BEGIN{var="variable testing";print var}' 2.3.2 gawk “ ” , 。 , : awk -v var="variable testing" 'BEGIN{print var}' 、printf printf : printf format, item1, item2, ... : 1、 print ,printf format; 2、format item ; 3、printf ;
format % , ; : %c: ASCII ; %d, %i: ; %e, %E: ; %f: ; %g, %G: ; %s: ; %u: ; %%: % ; : N: ; -: ; +: ; : # awk -F: '{printf "%-15s %i
",$1,$3}' /etc/passwd 、 print items > output-file print items >> output-file print items | command : /dev/stdin: /dev/sdtout: /dev/stderr: /dev/fd/N: , /dev/stdin /dev/fd/0; : # awk -F: '{printf "%-15s %i
",$1,$3 > "/dev/stderr" }' /etc/passwd 、awk : 6.1 : -x: +x: ; x^y: x**y: x*y: x/y: x+y: x-y: x%y: 6.2 : , , ; 6.3 : = += -= *= /= %= ^= **= ++ -- , = , /=/ , /[=]/ ; 6.4 awk , 0 , ; 6.5 : x < y True if x is less than y. x <= y True if x is less than or equal to y. x > y True if x is greater than y. x >= y True if x is greater than or equal to y. x == y True if x is equal to y. x != y True if x is not equal to y. x ~ y True if the string x matches the regexp denoted by y. x !~ y True if the string x does not match the regexp denoted by y. subscript in array True if the array array has an element with the subscript subscript. 6.7 : && || 6.8 : selector?if-true-exp:if-false-exp if selector; then if-true-exp else if-false-exp fi a=3 b=4 a>b?a is max:b ia max 6.9 : function_name (para1,para2) awk : awk 'program' input-file1 input-file2 ... program : pattern { action } pattern { action } ... 7.1 : 1、Regexp: , /regular expression/ 2、expresssion: , 0 , :$1 ~ /foo/ $1 == "magedu", ~( ) !~( )。 3、Ranges: , pat1,pat2 4、BEGIN/END: , awk 5、Empty( ): ; 7.2 Action 1、Expressions: 2、Control statements 3、Compound statements 4、Input statements 5、Output statements / /: 。 : , , $2>%1 。 : , : 。 BEGIN END 。 BEGIN: , 。 END: 。 : 8.1 if-else :if (condition) {then-body} else {[ else-body ]} : awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd awk -F: '{if ($1=="root") printf "%-15s: %s
", $1,"Admin"; else printf "%-15s: %s
", $1, "Common User"}' /etc/passwd awk -F: -v sum=0 '{if ($3>=500) sum++}END{print sum}' /etc/passwd 8.2 while : while (condition){statement1; statment2; ...} awk -F: '{i=1;while (i<=3) {print $i;i++}}' /etc/passwd awk -F: '{i=1;while (i<=NF) { if (length($i)>=4) {print $i}; i++ }}' /etc/passwd 8.3 do-while : do {statement1, statement2, ...} while (condition) awk -F: '{i=1;do {print $i;i++}while(i<=3)}' /etc/passwd 8.4 for : for ( variable assignment; condition; iteration process) { statement1, statement2, ...} awk -F: '{for(i=1;i<=3;i++) print $i}' /etc/passwd awk -F: '{for(i=1;i<=NF;i++) { if (length($i)>=4) {print $i}}}' /etc/passwd for : : for (i in array) {statement1, statement2, ...} awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i
",A,BASH[A]}}' /etc/passwd 8.5 case :switch (expression) { case VALUE or /REGEXP/: statement1, statement2,... default: statement1, ...} 8.6 break continue case 8.7 next , ; , ID : # awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd awk 9.1 array[index-expression] index-expression ; , , ,awk ; , , index in array 。 , : for (var in array) { statement1, ... } ,var , ; : netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' /^tcp/ , S[$NF] 1,NF , S ; awk '{counts[$1]++}; END {for(url in counts) print counts[url], url}' /var/log/httpd/access_log , IP 9.2 delete 。 : delete array[index] 、awk split(string, array [, fieldsep [, seps ] ]) : string fieldsep , array ; 0 ; netstat -ant | awk '/:80\>/{split($5,clients,":");IP[clients[1]]++}END{for(i in IP){print IP[i],i}}' | sort -rn | head -50 length([string]) : string ; substr(string, start [, length]) : string , start , length ;start 1 ; system(command) : command awk

다른 텍스트 보기 도구
    (cat;more;less;head;tail)
* cat:              (      ) tac:(        )
    [  ] [  ]..|                                
-n          
shift+pgup/pgdn(       )
* more:      (   :      b:         :     )
+n   n     
-n     n   
+/String   String     ,         
-c      
-p      
* less:(   )
-m      more      
-N     
/    :    “   ”   
?    :    “   ”   
n        (  /   ?   )
N          (  /   ?   )
b      
d      
* head:   n (  n   10 )
-v      
-c number    number   , number   ,      number        
-number/n (+)number    number   ,
-n number  number   ,      number        * tail:   n 
tail [    ] [    ] [  ] |         
tail -f  :      ,   ,                (             ,          )
-v          
-q        
-num/-n (-)num     num   
-n +num   num          
-c     c   
-f     
    (cut;sort;uniq)
* cut:
-b :          。                ,       -n   。
-c :          。
-d :      ,      。
-f : -d    ,        。
* sort:    (          ,           )( ascll   )
-n      
-r     
-t:       
-k:            
-u:            
-f:       
-o               。
* uniq:        
-d:       
-D:        
-c:          

      (wc)
* wc:      
-l     
-w      
-m      
-L               
       tr
* tr:       
  :tr ‘abc’ ‘ABC’ 

vim 편집기
     ,    

nano,sed,vi

vi:visual interface
vim (vi improve): vi    ,       
      ,       

vim  
1.     (    )
2.     
3.     

    :
  -->  :
    i:             ,      ;
    a:             ,      ;
    o:            ,    ,       ;

    I:           ,       
    A:           ,       
    O:           ,    ,       ;

  -->  :
    ESC

  -->  :
    :
       , set nu 
                              10,20d
  -->  :
    ESC, ESC
 、    
# vim /path/to/somefile
    vim +# :    ,     # 
    vim +:    ,       
    vim +/PATTERN :     ,       PATTERN        

            
 、    
1、        
:q    
:wq      
:q!       
:w   
:w!     
:wq --> :x
2、       
ZZ:      

 、    (    )
1、     :
    h:  
    l:  
    j:  
    k:  
 #h:   #   ;

2、        
    w:           
    e:              
    b:              

    #w:

3、    :
    0:     
    ^:            
    $:     

4、    
    #G:    # ;
    G:    

         ,        

 、  
Ctrl+f:      
Ctrl+b:      

Ctrl+d:      
Ctrl+u:      

 、      
x:             
#x:             #   

 、    : d
d           ;
#dw, #de, #db         #  

dd:          
#dd:               # ;

     :
StartADD,EndADDd    :3,8d   3 8   
    .:      
    $:     
    +#:    # 
.,$-3d             
 、     p
p:             ,            ,              ,             ;
P:             ,            ,              ,             ;

 、     y
       d  

 、  :     ,        
    c:    d  

 、  :r
R:     

  、       u
u:          
      u        n     
#u:       #     

          :Ctrl+r

  、         
.

  、     
v:      
V:     

  、  
/PATTERN
?PATTERN
    n
    N

  、     
        s  
ADDR1,ADDR2s@PATTERN@string@gi
1,$
%:    

  、  vim      
vim FILE1 FILE2 FILE3
:next         
:prev         
:last          
:first         

  
:qa     

  、        
Ctrl+w, s:       
Ctrl+w, v:       

        :
Ctrl+w, ARROW

:qa       

  、         
vim -o :       
vim -O :       

  、                   
       w  
:w
:ADDR1,ADDR2w /path/to/somewhere

  、                  
:r /path/to/somefile

   、 shell  
:! COMMAND

   、    
1、         
:set number
:set nu

:set nonu

2、            
:set ignorecase
:set ic      

:set noic    

3、      
:set autoindent
:set ai        
:set noai     

4、             
:set hlsearch
:set nohlsearch

5、    
:syntax on
:syntax off

   、    
/etc/vimrc
~/.vimrc

좋은 웹페이지 즐겨찾기