linux-awk & sedÖ®ÆæÊýÐÐÓëżÊýÐеĴòÓ¡-zt
ÉÏһƪ /
ÏÂһƪ 2016-06-16 14:48:33
/ ¸öÈË·ÖÀࣺlinux
ת×Ô£ºhttp://blog.chinaunix.net/uid-10540984-id-316081.html
¶ÔÓÚÕâ¸öÎÊÌâ»òÐí´ó¼Ò¾õµÃ²»ÄÑ£¬È·ÊµÒ²²»ÊÇʲô̫ÄѵÄÎÊÌ⣬Ê×ÏÈÏëµ½µÄÊǶÔ2µÄÈ¡Ó࣬³ÏÈ»£¬ÔÚ±à³Ì˼ÏëÀïÕâÊÇÒ»¸ö¸ÅÄî¡£ÏÂÃæÎÒÃÇ¿´¿´¼¸¸öÀý×Ó¡£
- $ cat file
- 1
- 2
- 3
- 4
- 5
- 6
- $ awk 'NR%2' file
- 1
- 3
- 5
- $ awk '!(NR%2)'file
- 2
- 4
- 6
[½âÎö]
ÕâÓ¦¸ÃÊÇ×î±ê×¼µÄ´ð°¸£¬NRÊÇÐкţ¬awkµÄÄÚ½¨º¯Êý£¬µ±µÚÒ»ÐУ¬NR==1ʱ£¬¶Ô2È¡Ó࣬½á¹ûÊÇ1£¬ÔÚawkµÄÖ´ÐÐģʽÀÕâ¸ö1¾ÍÊÇpattern£¬
ΪÕ棬ִÐÐĬÈϵÄ{print}£¬Õâ¸öaction²Ù×÷¡£ÄÇô´òÓ¡³ö¸ÃÐУ¬µ½µÚ2ÐÐÔòÓàÊýÊÇ0£¬patternΪ0£¬ÔòΪ¼Ù£¬²»»áÖ´ÐÐĬÈϵÄ
{print}£¬Ôò²»»áÊä³öżÊýÐС£¾Í´ïµ½ÁËÖ»Êä³öÆæÊýÐеÄЧ¹û£¬·´Ö®ÔòÊä³öżÊýÐÐÁË¡£ÎÒÃÇÔÙ¿´¿´Ò»¸ö¸üÐÂÓ±µÄ°ì·¨¡£
- $ awk '++i%2' file
- 1
- 3
- 5
- $ awk 'i++%2' file
- 2
- 4
- 6
[½âÎö]
ÕâÐÐÃüÁî³ä·ÖµÄÀûÓÃÁËCÓïÑÔÖÐ ++i Óë i++ µÄÇø±ð£¬i++
ÖÐiµÄÖµ×Ô¼ÓÒ»´ÎºóÕâ¸ö±í´ïʽµÄ½á¹ûµÈÓÚ1£¬µ«´ËʱiµÄÖµÈÔȻΪ0£¬ÎªÊ²Ã´ÄØ£¿iµÄÖµÔÚµ±Ç°±í´ïʽÖв»»á¸Ä±ä£¬++iÖÐiµÄÖµ×Ô¼ÓÒ»´Îºó£¬iµÄÖµÊÇ1£¬Ìý
ÆðÀ´ºÜì¶Ü£¿È·Êµ±È½ÏÈÄ¿Ú£¬ÎÒÃÇÔÙµ÷ÓÃÒ»¸öC³ÌÐòÀ´ËµÃ÷Àý×Ó£º
- # include<stdio.h>
- intmain(void)
- {
- inti,j,a,b;
- i=j=0;
- a=i++;
- b=++j;
- printf("a = %d , i = %d , b = %d , j = %d\n",a,i,b,j);
- return 0;
- }
- /*
- ÔËÐнá¹û:
- a=0, i=1, b=1,j=1
- */
[½âÎö]
ÔÚÕâ¸ö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£¬µ«ÊÇÔÚ¸³ÖµºÍ±È½ÏµÄʱºò£¬È´ÊÇÓÐÇø±ðµÄ¡£¿´µ½ÕâÀïÎÒÏë´ÏÃ÷µÄÄúÒѾÃ÷°×ÁËËüÃǵÄÇø±ð¡£ÎÒÃÇÔÙ¿´¿´µÚÈýÖз½·¨¡£
- $ awk 'i=!i' file
- 1
- 3
- 5
- $ awk '!(i=!i)' file
- 2
- 4
- 6
[½âÎö]
Õâ¾ä»¹ÐèÒªÎÒ½âÊÍÂ𣿸óÏÂÏë±ØÒѾÃ÷°×ÆäÖеİÂÃîÁË°É¡£^_^
- $ awk 'and(FNR,1)'file
- 1
- 3
- 5
- $ awk '!and(FNR,1)'file
- 2
- 4
- 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Ïà
Óë½á¹û²ÅΪÕ棬·ñÔò½á¹û¶¼Îª¼Ù¡£¼´Ö»Êä³öÆæÊýÐУ¬·ÇÔòÊä³öżÊýÐС£
- $ sed-n 'p;n' file
- 1
- 3
- 5
- $ sed-n 'n;p' file
- 2
- 4
- 6
[½âÎö]
sedÒ²²»ÄѽâÊÍ£¬ºÃºÃ¿´¿´ÊÖ²á°É¡£
- $ seq 6|sed-n '1~2p'
- 1
- 3
- 5
- $ seq 6|sed-n '0~2p'
- 2
- 4
- 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'.
- seq 10|sed '0~3a\=='
- seq 10 | awk 'ORS=NR%3?"\n":"\n==\n"
[½âÎö]
ÿ¸ôÈýÐоÍÔÚºóÃæÌí¼ÓÒ»¸ö·Ö¸î·û¡£
Ïà¹ØÔĶÁ:
- linux ½âѹjar°üµ½Ö¸¶¨Ä¿Â¼ (xuquan, 2016-6-06)
- LinuxÐźÅÓ¦ÓÃÖ®ºÚÏ»×Ó³ÌÐòÉè¼Æ (zaza9084, 2016-6-07)
- LinuxË«Íø¿¨NAT¹²ÏíÉÏÍø (zaza9084, 2016-6-08)
- LinuxµÄcoreÎļþ (zaza9084, 2016-6-12)
- vim²é¿´Îļþ£¬¶àÁË<200b>×Ö·û£¬Ê¹ÓÃsed½øÐйýÂË (fairylly, 2016-6-12)
- µÚÒ»¸öLinuxÇý¶¯³ÌÐò£ºÍ³¼Æµ¥´Ê¸öÊý (zaza9084, 2016-6-13)
- Linux̽ÃØÖ®I/OЧÂÊ (zaza9084, 2016-6-14)
- LinuxÏ´TestLink1.9.13¼¯³ÉJIRA6µÄ¹ý³Ì (ÜÔÀò1, 2016-6-14)
- Linux A»úÆ÷ÃâÃÜÂëSSHµÇ¼B»úÆ÷ (zaza9084, 2016-6-15)
- LinuxÅäÖÃÁÙʱIPµØÖ· (zaza9084, 2016-6-16)
ÊÕ²Ø
¾Ù±¨
TAG:
awk
Linux
sed
linux
ÆæÊýÐÐ
żÊýÐÐ
´òÓ¡