linux-awk & sedÖ®ÆæÊýÐÐÓëżÊýÐеĴòÓ¡-zt

ÉÏһƪ / ÏÂһƪ  2016-06-16 14:48:33 / ¸öÈË·ÖÀࣺlinux

ת×Ô£ºhttp://blog.chinaunix.net/uid-10540984-id-316081.html

¶ÔÓÚÕâ¸öÎÊÌâ»òÐí´ó¼Ò¾õµÃ²»ÄÑ£¬È·ÊµÒ²²»ÊÇʲô̫ÄѵÄÎÊÌ⣬Ê×ÏÈÏëµ½µÄÊǶÔ2µÄÈ¡Ó࣬³ÏÈ»£¬ÔÚ±à³Ì˼ÏëÀïÕâÊÇÒ»¸ö¸ÅÄî¡£ÏÂÃæÎÒÃÇ¿´¿´¼¸¸öÀý×Ó¡£
 
  1. $ cat file
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. $ awk 'NR%2' file
  9. 1
  10. 3
  11. 5
  12. $ awk '!(NR%2)'file
  13. 2
  14. 4
  15. 6

[½âÎö]

  ÕâÓ¦¸ÃÊÇ×î±ê×¼µÄ´ð°¸£¬NRÊÇÐкţ¬awkµÄÄÚ½¨º¯Êý£¬µ±µÚÒ»ÐУ¬NR==1ʱ£¬¶Ô2È¡Ó࣬½á¹ûÊÇ1£¬ÔÚawkµÄÖ´ÐÐģʽÀÕâ¸ö1¾ÍÊÇpattern£¬ ΪÕ棬ִÐÐĬÈϵÄ{print}£¬Õâ¸öaction²Ù×÷¡£ÄÇô´òÓ¡³ö¸ÃÐУ¬µ½µÚ2ÐÐÔòÓàÊýÊÇ0£¬patternΪ0£¬ÔòΪ¼Ù£¬²»»áÖ´ÐÐĬÈ쵀 {print}£¬Ôò²»»áÊä³öżÊýÐС£¾Í´ïµ½ÁËÖ»Êä³öÆæÊýÐеÄЧ¹û£¬·´Ö®ÔòÊä³öżÊýÐÐÁË¡£ÎÒÃÇÔÙ¿´¿´Ò»¸ö¸üÐÂÓ±µÄ°ì·¨¡£

  1. $ awk '++i%2' file
  2. 1
  3. 3
  4. 5
  5. $ awk 'i++%2' file
  6. 2
  7. 4
  8. 6

[½âÎö]

  ÕâÐÐÃüÁî³ä·ÖµÄÀûÓÃÁËCÓïÑÔÖÐ ++i Óë i++ µÄÇø±ð£¬i++ ÖÐiµÄÖµ×Ô¼ÓÒ»´ÎºóÕâ¸ö±í´ïʽµÄ½á¹ûµÈÓÚ1£¬µ«´ËʱiµÄÖµÈÔȻΪ0£¬ÎªÊ²Ã´ÄØ£¿iµÄÖµÔÚµ±Ç°±í´ïʽÖв»»á¸Ä±ä£¬++iÖÐiµÄÖµ×Ô¼ÓÒ»´Îºó£¬iµÄÖµÊÇ1£¬Ìý ÆðÀ´ºÜì¶Ü£¿È·Êµ±È½ÏÈÄ¿Ú£¬ÎÒÃÇÔÙµ÷ÓÃÒ»¸öC³ÌÐòÀ´ËµÃ÷Àý×Ó£º

  1. # include<stdio.h>
  2. intmain(void)
  3. {
  4.     inti,j,a,b;
  5.     i=j=0;
  6.     a=i++;
  7.     b=++j;
  8.     printf("a = %d , i = %d , b = %d , j = %d\n",a,i,b,j);
  9.     return 0;
  10. }
  11. /*
  12. ÔËÐнá¹û:
  13. a=0, i=1, b=1,j=1
  14. */

[½âÎö]

  ÔÚÕâ¸öCÓïÑÔ³ÌÐòÖв»ÄÑ¿´³ö£¬aµÄÖµÊÇ0£¬iµÄֵȴÊÇ1£¬i++ ÊÇ°Ñ×Ô¼ÓÇ°µÄÖµ¸³Óè**¬Ôò ++i ²»Ò»Ñù¡£Õâ¾Í¿ÉÒÔ½âÊÍΪʲô i++ Êä³öµÄÊÇżÊýÐÐÁË£¬µÚÒ»ÐÐʱ£¬ÒòΪ¶Ô2È¡ÓàµÄʱºò i++ ×Ô¼ÓÒ»´ÎºóµÄÖµÊÇ1£¬µ« i++ ÊÇ°ÑiµÄ×Ô¼ÓÇ°µÄֵȥ¶Ô2È¡ÓàµÄ£¬0¶Ô2È¡Óà½á¹ûΪ0£¬Ìõ¼þΪ¼Ù£¬µ½µÚ¶þÐеÄʱºòiµÄÖµ²ÅÊÇÉÏ´Î×Ô¼ÓºóµÄֵΪ1£¬¶Ô2È¡ÓàÊýΪ1£¬patternΪÕ棬Ôò Êä³öµÚ2ÐУ¬ÒÔ´ËÀàÍÆ¡£++i ÔòÊÇ×Ô¼ÓºóiµÄÖµÊÇ1£¬ËùÒÔÊä³öµÄÆæÊýÐС£++i ºÍ i++ ËûÃÇ×ԼӵĽá¹û¶¼ÊÇiΪ1£¬µ«ÊÇÔÚ¸³ÖµºÍ±È½ÏµÄʱºò£¬È´ÊÇÓÐÇø±ðµÄ¡£¿´µ½ÕâÀïÎÒÏë´ÏÃ÷µÄÄúÒѾ­Ã÷°×ÁËËüÃǵÄÇø±ð¡£ÎÒÃÇÔÙ¿´¿´µÚÈýÖз½·¨¡£

 

  1. $ awk 'i=!i' file
  2. 1
  3. 3
  4. 5
  5. $ awk '!(i=!i)' file
  6. 2
  7. 4
  8. 6

[½âÎö]

  Õâ¾ä»¹ÐèÒªÎÒ½âÊÍÂ𣿸óÏÂÏë±ØÒѾ­Ã÷°×ÆäÖеİÂÃîÁË°É¡£^_^

 

  1. $ awk 'and(FNR,1)'file
  2. 1
  3. 3
  4. 5
  5. $ awk '!and(FNR,1)'file
  6. 2
  7. 4
  8. 6

[½âÎö]

  awkÀïÃæÓÐÈý¸öbuilt-in function£¬·Ö±ðÊÇ£ºand(a, b)°´Î»Ó룬or(a, b)°´Î»»ò£¬xor(a, b)°´Î»Òì»ò£¬µ±FNRΪ1µÄʱºò£¬¾ÍÊǵÚÒ»ÐУ¬1µÄ2½øÖÆΪ0001£¬Óë0001°´Î»Ó룬µÃµ½½á¹ûÊÇ0001£¬0001µÄ½á¹ûΪÕ棬¾Í´òÓ¡¸ÄÐУ¬µ± FNRΪ2ʱ¶þ½øÖƱíʾΪ0010£¬ÄÇôÓÖÓë0001ÏàÓ룬½á¹ûΪ0000£¬Ìõ¼þΪ¼Ù£¬Ôò²»´òÓ¡¡£Ö»Óе±FNRΪÆæÊýʱ£¬¶þ½øÖƵÄβÊýΪ1£¬Óë0001Ïà Óë½á¹û²ÅΪÕ棬·ñÔò½á¹û¶¼Îª¼Ù¡£¼´Ö»Êä³öÆæÊýÐУ¬·ÇÔòÊä³öżÊýÐС£

 

  1. $ sed-n 'p;n' file
  2. 1
  3. 3
  4. 5
  5. $ sed-n 'n;p' file
  6. 2
  7. 4
  8. 6

[½âÎö]

  sedÒ²²»ÄѽâÊÍ£¬ºÃºÃ¿´¿´ÊÖ²á°É¡£

 

  1. $ seq 6|sed-n '1~2p'
  2. 1
  3. 3
  4. 5
  5. $ seq 6|sed-n '0~2p'
  6. 2
  7. 4
  8. 6

[½âÎö]

  FIRST~STEP
  This GNU extension matches every STEPth line starting with line FIRST.In particular, lines will be selected when there exists a non-negative N such that the current line-number equals FIRST + (N * STEP).  Thus, to select the odd-numbered lines, one would use`1~2'.



  1. seq 10|sed '0~3a\=='

  2. seq 10 | awk 'ORS=NR%3?"\n":"\n==\n"

[½âÎö]

ÿ¸ôÈýÐоÍÔÚºóÃæÌí¼ÓÒ»¸ö·Ö¸î·û¡£


TAG: awk Linux sed linux ÆæÊýÐРżÊýÐÐ ´òÓ¡

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä

Open Toolbar