Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Practical unix utilities for text processing

Practical unix utilities for text processing

Anton Arhipov

October 01, 2010
Tweet

More Decks by Anton Arhipov

Other Decks in Technology

Transcript

  1. sed     vim   awk     ls  

    cat   tac   head   tail   split   wc   sum   sort   uniq   kill   cut   paste   join   tr   dir   mv   du   echo   test   expr   tee   grep  
  2. List  of  files:     ls  –l   ls  –1

      ls  –latr     find  .  –name  *.txt  
  3. Seek  for  a  string  in  a  file:     grep

     “cat”  file.txt   grep  –v  “dog”  file.txt   grep  –i  “PaTtErN”  file.txt   egrep  “cat|dog”  file.txt   zgrep  “cat”  file.txt.gz  
  4. for  file  in  `find  .  –name  *tmp`    do  

         rm  $file    done   find  .  –name  *tmp  |  xargs  rm   Do  something  with  each  file:  
  5. find  +  grep     find  .  -­‐name  '*txt'  -­‐exec

     grep  -­‐l  aaa  {}  \;     find  .  -­‐name  '*txt'  |  xargs  grep  -­‐l  aaa      
  6. ls   cat   tac   head   tail  

    split   wc   sum   sort   uniq   kill   cut   paste   join   tr   dir   mv   du   echo   test   expr   tee   grep  
  7. s  for  substitution     sed  ‘s/cat/dog/’     #

     cat  -­‐>  dog     sed  ‘s/\(a\)\(b\)/\2\1/’   #  ab  -­‐>  ba    
  8. p  for  printing     sed  –n  ‘/dog/p’    

    #  print  lines  that  match  ‘dog’     sed  –n  ‘/start/,/end/p’   #  print  range    
  9. d  to  delete     sed  ‘/dog/d’   #  delete

     lines  that  match  ‘dog’     sed  ‘1,/pattern/d’   #  delete  range    
  10. |  and  –e  for  invocation     sed  ‘s/a/A/’  |

     sed  ‘s/b/B/’   #       sed  –e  ‘s/a/A/’  –e  ‘s/b/B/’     #    
  11. {  ..  }  to  group  the  commands     sed

     ‘/pattern/  {                  s/p/P/                  s/e/E/          }’   #pattern  -­‐>  PattErn  
  12. r  to  read  a  file     sed  ‘/include/  r

     file.txt’   #  insert  file.txt  after  include     w  to  write  to  a  file     sed  ‘/pattern/  w  file.txt’   #  write  matched  lines  to  a  file    
  13. aaa  bbb  ccc   aaa  bbb  zzz     awk

     '/zzz/'    1.txt       grep      zzz        1.txt     aaa  bbb  zzz  
  14. awk     'BEGIN            

                 {<initializations>}     <pattern  1>        {<actions>}     <pattern  2>        {<actions>}     ...     END                                      {<final  actions>}'  
  15. awk     'BEGIN        {a=0,  b=0}  

      /aaa/                  {a++}     /bbb/                {b++}     END                    {printf  “%d\t%d”,a,b}'  
  16. awk     '{arr[$2]+=$1}     END      {

     for  (id  in  arr)            printf  "%s\t%d\t\n",id,arr[id]}'