• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

               C++ 技術(shù)中心

               :: 首頁 :: 聯(lián)系 ::  :: 管理
              160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

            公告

            鄭重聲明:本BLOG所發(fā)表的原創(chuàng)文章,作者保留一切權(quán)利。必須經(jīng)過作者本人同意后方可轉(zhuǎn)載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

            留言簿(27)

            搜索

            •  

            最新隨筆

            最新評論

            評論排行榜

            一.awk功能特點
                 awk是一個非常重要的命令或者認為是一種語言。因為他可以做數(shù)學(xué)運算,流程控制語句,流控制,還有樣式裝入的功能。反正是非常強大。awk是三位創(chuàng)建者編寫的。把awk定義為:樣式掃描處理語言。
               awk吸收了C語言很多的特點,所以與C語言有點類擬。

            二.awk的調(diào)用方式
                awk提供了適應(yīng)不同需要的多種方案,它們是:
              1.awk命令行
                     像普通的unix命令一樣使用awk,當(dāng)然可以在你的命令行中使用awk設(shè)計語言。而且還可以在shell腳本中引用awk命令或awk程序腳本。
               2.使用-f選項調(diào)用awk程序。
                    awk可以將一段awk程序腳本寫入到一個文本文件,然后使用-f選項來指定執(zhí)行這個awk語言腳本。
              3.利用命令解釋器調(diào)用awk程序
                    利用unix支持的命令解釋功能。可以將一段awk程序?qū)懭氲轿谋疚募缓笤谒牡谝恍屑由希?/span>
                  #!/bin/awk -f
               并chmod u+x權(quán)限。這樣以后,你就可以用以下命令格式來調(diào)用了。
               $awk 腳本文件名  待處理的文件

            三.awk語法
              1.與其他的unix命令一樣,它的語法如下:
                awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
               參數(shù)說明:
                 -F re,指定某字符為分隔符
                parameter:該參數(shù)幫助不同的變量賦值
                'prog': awk的程序語句段。這個語句段必須用'與'括起來。以防被shell給解釋掉了。它的標準形式如下:
                     'pattern {action}'
                其中pattern參數(shù)可以是grep正則表達式中的任何一個,
            它可以使用語法/re/再加上一些樣式匹配技巧構(gòu)成,也可以使用","分開兩樣式以選擇某個范圍。。 action參數(shù)總是被大括號包圍,它由一系統(tǒng)awk語句組成,各語句之間用";"分隔。awk解釋它們,并在pattern給定的樣式匹配的記錄上執(zhí)行 其操作。與shell類似,你也可以使用“#”作為注釋符,它使“#”到行尾的內(nèi)容成為注釋,在解釋執(zhí)行時,它們將被忽略。你可以省略pattern和 action之一,但不能兩者同時省略,當(dāng)省略pattern時沒有樣式匹配,表示對所有行(記錄)均執(zhí)行操作,省略action時執(zhí)行缺省的操作——在 標準輸出上顯示。

            -f profile:
            允許awk調(diào)用并執(zhí)行progfile指定程序文件。progfile是一個文本文件,他必須符合awk的語法(注意不是shell文件)。

             
            in_file :awk的輸入文件,可以有多個。注意:awk不會修改輸入文件。如果沒有指定輸入文件,那么默認為標準輸入(屏幕)

            四. awk的記錄,字段與內(nèi)置變量
             1. 記錄與字段
            在 awk中,缺省的情況下總是將文本文件中的一行視為一個記錄,而將一行中的某一部分作為記錄中的一個字段。為了操作這些不同的字段,awk借用shell 的方法,用$1,$2,$3...這樣的方式來順序地表示行(記錄)中的不同字段。特殊地,awk用$0表示整個行(記錄)。不同的字段之間是用稱作分隔 符的字符分隔開的。系統(tǒng)默認的分隔符是空格。awk允許在命令行中用-F re的形式來改變這個分隔符。事實上,awk用一個內(nèi)置的變量FS來記憶這個分隔符

              2. 內(nèi)置變量
              
            awk中有好幾個這樣的內(nèi)置變量,例如,記錄分隔符變量RS、當(dāng)前工作的記錄數(shù)NR等等。

              示例:顯示文件本文件testAwk中第3行到第6行,以字符%分隔的第一個字段,第三個字段:
             awk -F % 'NR==3,NR==6 {printf $1  $3}' testAwk
              
              示例:殺死系統(tǒng)中所有top進程
                ps -ef|grep " top" |grep -v "grep"|awk '{printf $2}'|xargs kill -9
                或
                kill -9 `ps -ef|grep " top" |grep -v "grep"|awk '{printf $2}'`

            五. awk的內(nèi)置函數(shù)
              1.  以上示例了printf函數(shù),它與C語言相似,如下,顯示testAwk文件中行號與第1個字段:
              $awk '{printf"%03d%s\n",NR,$1}' testAwk
              2.
            顯示文本文件mydoc匹配(含有)字符串"sun"的所有行
              
            $awk '/sun/{print}' mydoc
              3.
            由于顯示整個記錄(全行)是awk的缺省動作,因此可以省略action項
              
            $awk '/sun/' mydoc

              4.
            示第一個匹配Sun或sun的行與第一個匹配Moon或moon的行之間的行,并顯示到標準輸出上
               
            $awk '/[Ss]un/,/[Mm]oon/ {print}' myfile

              5.
            下面的示例顯示了內(nèi)置變量和內(nèi)置函數(shù)length()的使用:
              
            $awk 'length($0)>80 {print NR}' myfile

              6.
            UNIX中的用戶進行安全性檢查,方法是考察/etc下的passwd文件,檢查其中的passwd字段(第二字段)是否為"*",如不為"*",則表示該用戶沒有設(shè)置密碼,顯示出這些用戶名(第一字段)。我們可以用如下語句實現(xiàn):
              
            #awk -F: '$2=="" {printf("%s no password!\n",$1' /etc/passwd
              
            在這個示例中,passwd文件的字段分隔符是“:”,因此,必須用-F:來更改默認的字段分隔符,這個示例中也涉及到了內(nèi)置函數(shù)printf的使用
             
             六.
            awk的變量
              
            awk提供兩種變量:
               (1) 內(nèi)置變量
              在引用時,不需要加$
               (2)
            自定義變量
                  
            awk中引用自定義變量必須在它前面加上標志符"$"。awk根據(jù)其在awk中第一次出現(xiàn)的形式和上下文確定其具體的數(shù)據(jù)類型。當(dāng)變量類型不確定時,awk默認其為字符串類型。這里有一個技巧:如果你要讓你的awk程序知道你所使用的變量的明確類型,你應(yīng)當(dāng)在在程序中給它賦初值。
             
            七.
            運算與判斷
               
            awk 支持多種運算,這些運算與C語言提供的幾本相同:如+、-、*、/、%等等,同時,awk也支持C語言中類似++、--、+=、-=、=+、=-之類的功 能,這給熟悉C語言的使用者編寫awk程序帶來了極大的方便。作為對運算功能的一種擴展,awk還提供了一系列內(nèi)置的運算函數(shù)(如log、sqr、 cos、sin等等)和一些用于對字符串進行操作(運算)的函數(shù)(如length、substr等等)。這些函數(shù)的引用大大的提高了awk的運算功能。

            作 為對條件轉(zhuǎn)移指令的一部分,關(guān)系判斷是每種程序設(shè)計語言都具備的功能,awk也不例外。awk中允許進行多種測試,如常用的==(等于)、!=(不等 于)、>(大于)、<(小于)、>=(大于等于)、>=(小于等于)等等,同時,作為樣式匹配,還提供了~(匹配于)和!~(不 匹配于)判斷。

            作為對測試的一種擴充,awk也支持用邏輯運算符:!(非)、&&(與)、||(或)和括號()進行多重判斷,這大大增強了awk的功能。本文的附錄中列出了awk所允許的運算、判斷以及操作符的優(yōu)先級。

             八.
            awk的流程控制
              1.
            BEGIN和END:
                
            任何在BEGIN之后列出的操作(在{}內(nèi))將在awk開始掃描輸入之前執(zhí)行,而END之后列出的操作將在掃描完全部的輸入之后執(zhí)行。因此,通常使用BEGIN來顯示變量和預(yù)置(初始化)變量,使用END來輸出最終結(jié)果。
              
            例:累計銷售文件xs中的銷售金額(假設(shè)銷售金額在記錄的第三字段):

            $awk
            >'BEGIN { FS=":";print "統(tǒng)計銷售金額";total=0}
            >{print $3;total=total+$3;}
            >END {printf "銷售金額總計:%.2f",total}' sx
            (注:>是shell提供的第二提示符,如要在shell程序awk語句和awk語言中換行,則需在行尾加反斜杠\)

            在這里,BEGIN預(yù)置了內(nèi)部變量FS(字段分隔符)和自定義變量total,同時在掃描之前顯示出輸出行頭。而END則在掃描完成后打印出總合計。


              2.
            流程控制語句
              (1) if .. else
             
            if...else語句
               
            格式:
            if(表達式)
            語句1
            else
            語句2
             
              
            if(表達式1)
            {if(表達式2)
            語句1
            else
            語句2
            }
            語句3
            else {if(表達式3)
            語句4
            else
            語句5
            }
            語句6
              (2)
            while語句
               
            格式為:

            while(表達式)
            語句
              (3)do-while語句
            格式為:
            do
            {
            語句
            }while(條件判斷語句)


               (4)
            for語句
               
            for(初始表達式;終止條件;步長表達式)
            {語句}

            在 awk的 while、do-while和for語句中允許使用break,continue語句來控制流程走向,也允許使用exit這樣的語句來退出。break 中斷當(dāng)前正在執(zhí)行的循環(huán)并跳到循環(huán)外執(zhí)行下一條語句。continue從當(dāng)前位置跳到循環(huán)開始處執(zhí)行。對于exit的執(zhí)行有兩種情況:當(dāng)exit語句不在 END中時,任何操作中的exit命令表現(xiàn)得如同到了文件尾,所有模式或操作執(zhí)行將停止,END模式中的操作被執(zhí)行。而出現(xiàn)在END中的exit將導(dǎo)致程序終止。


            九.awk中的自定義函數(shù)
             
            原始的awk并不提供函數(shù)功能,只有在nawk或較新的awk版本中才可以增加函數(shù)
            awk函數(shù)的定義方法如下:

            function 函數(shù)名(參數(shù)表){
            函數(shù)體
            }
            在gawk中允許將function省略為func,但其它版本的awk不允許。在 awk中調(diào)用函數(shù)比較簡單,其方法與C語言相似,但awk比C語言更為靈活,它不執(zhí)行參數(shù)有效性檢查。換句話說,在你調(diào)用函數(shù)時,可以列出比函數(shù)預(yù)計(函 數(shù)定義中規(guī)定)的多或少的參數(shù),多余的參數(shù)會被awk所忽略,而不足的參數(shù),awk將它們置為缺省值0或空字符串,具體置為何值,將取決于參數(shù)的使用方 式。在函數(shù)中使用形如:return 返回值 格式的語句。
            例: 下面的例子演示了函數(shù)的使用。在這個示例中,定義了一個名為print_header的函數(shù),該函數(shù)調(diào)用了兩個參數(shù)FileName和 PageNum,F(xiàn)ileName參數(shù)傳給函數(shù)當(dāng)前使用的文件名,PageNum參數(shù)是當(dāng)前頁的頁號。這個函數(shù)的功能是打?。@示)出當(dāng)前文件的文件名, 和當(dāng)前頁的頁號。完成這個功能后,這個函數(shù)將返回下一頁的頁號。
            nawk
            >'BEGIN{pageno=1;file=FILENAME
            >pageno=print_header(file,pageno);#調(diào)用函數(shù)print_header
            >printf("當(dāng)前頁頁號是:%d\n",pageno);
            >}
            >#定義函數(shù)print_header
            >function print_header(FileName,PageNum){
            >printf("%s %d\n",FileName,PageNum); >PageNum++;return PageNUm;
            >}
            >}' myfile
            執(zhí)行這個程序?qū)@示如下內(nèi)容:
            myfile 1
            當(dāng)前頁頁號是:2


             十.awk高級輸入輸出
            1.讀取下一條記錄:
            awk的next語句導(dǎo)致awk讀取下一個記錄并完成模式匹配,然后立即執(zhí)行相應(yīng)的操作。通常它用匹配的模式執(zhí)行操作中的代碼。next導(dǎo)致這個記錄的任何額外匹配模式被忽略。

            2.簡單地讀取一條記錄
            awk 的 getline語句用于簡單地讀取一條記錄。如果用戶有一個數(shù)據(jù)記錄類似兩個物理記錄,那么getline將尤其有用。它完成一般字段的分離(設(shè)置字段變 量$0 FNR NF NR)。如果成功則返回1,失敗則返回0(到達文件尾)。如果需簡單地讀取一個文件,則可以編寫以下代碼:
            例:示例getline的使用
            {while(getline==1)
            {
            #process the inputted fields
            }
            }
            也可以使getline保存輸入數(shù)據(jù)在一個字段中,而不是通過使用getline variable的形式處理一般字段。當(dāng)使用這種方式時,NF被置成0,F(xiàn)NR和NR被增值。
            用 戶也可以使用getline<"filename"方式從一個給定的文件中輸入數(shù)據(jù),而不是從命令行所列內(nèi)容輸入數(shù)據(jù)。此時,getline將完成 一般字段分離(設(shè)置字段變量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失敗。用戶可以從給定文件中讀取數(shù)據(jù)到一個變量中,也可以 用stdin(標準輸入設(shè)備)或一個包含這個文件名的變量代替filename。值得注意的是當(dāng)使用這種方式時不修改FNR和NR。

            另一種使用getline語句的方法是從UNIX命令接受輸入,例如下面的例子:
            例:示例從UNIX命令接受輸入
            {while("who -u"|getline)
            {
            #process each line from the who command
            }
            }

            當(dāng)然,也可以使用如下形式:
            "command" | getline variable

            3.關(guān)閉文件:
            awk中允許在程序中關(guān)閉一個輸入或輸出文件,方法是使用awk的close語句。
            close("filename")
            filename可以是getline打開的文件(也可以是stdin,包含文件名的變量或者getline使用的確切命令)。或一個輸出文件(可以是stdout,包含文件名的變量或使用管道的確切命令)。

            4.輸出到一個文件:
            awk中允許用如下方式將結(jié)果輸出到一個文件:
            printf("hello word!\n")>"datafile"

            printf("hello word!\n")>>"datafile"

            5.輸出到一個命令
            awk中允許用如下方式將結(jié)果輸出到一個命令:
            printf("hello word!\n")|"sort-t','"


            十一.
            awk與shell script混合編程
            因 為awk可以作為一個shell命令使用,因此awk能與shell批處理程序很好的融合在一起,這給實現(xiàn)awk與shell程序的混合編程提供了可能。 實現(xiàn)混合編程的關(guān)鍵是awk與shell script之間的對話,換言之,就是awk與shell script之間的信息交流:awk從shell script中獲取所需的信息(通常是變量的值)、在awk中執(zhí)行shell命令行、shell script將命令執(zhí)行的結(jié)果送給awk處理以及shell script讀取awk的執(zhí)行結(jié)果等等。

            1.awk讀取Shell script程序變量
            在awk中我們可以通過“'$變量名'”的方式讀取sell scrpit程序中的變量。
            例:在下面的示例中,我們將讀取sell scrpit程序中的變量Name,該變量存放的是文本myfile的撰寫者,awk將打印出這個人名。
            $cat writename
            :
            # @(#)
            #
            .
            .
            .
            Name="張三" nawk 'BEGIN {name="'Name'";\ printf("\t%s\t撰寫者%s\n",FILENAME,name");}\
            {...}END{...}' myfile
            .
            .
            .

            2.將shell命令的執(zhí)行結(jié)果送給awk處理
            作為信息傳送的一種方法,我們可以將一條shell命令的結(jié)果通過管道線(|)傳遞給awk處理:
            例:示例awk處理shell命令的執(zhí)行結(jié)果
            $who -u | awk '{printf("%s正在執(zhí)行%s\n",$2,$1)}'
            該命令將打印出注冊終端正在執(zhí)行的程序名。

            3.shell script程序讀awk的執(zhí)行結(jié)果
            為 了實現(xiàn)shell script程序讀取awk執(zhí)行的結(jié)果,我們可以采取一些特殊的方法,例如我們可以用變量名=`awk語句`的形式將awk執(zhí)行的結(jié)果存放入一個 shell script變量。當(dāng)然也可以用管道線的方法將awk執(zhí)行結(jié)果傳遞給shell script程序處理。
            例:作為傳送消息 的機制之一,UNIX提供了一個向其所有用戶傳送消息的命令wall(意思是write to all寫給所有用戶),該命令允許向所有工作中的用戶(終端)發(fā)送消息。為此,我們可以通過一段shell批處理程序wall.shell來模擬這一程序 (事實上比較老的版本中wall就是一段shell批處理程序:

            $cat wall.shell
            :
            # @(#) wall.shell:發(fā)送消息給每個已注冊終端
            #
            cat >/tmp/$$
            #用戶錄入消息文本 who -u | awk '{print $2}' | while read tty
            do
            cat /tmp/$$>$tty
            done
            在 這個程序里,awk接受who -u命令的執(zhí)行結(jié)果,該命令打印出所有已注冊終端的信息,其中第二個字段是已注冊終端的設(shè)備名,因此用awk命令析出該設(shè)備名,然后用while read tty語句循環(huán)讀出這些文件名到變量(shell script變量)tty中,作為信息傳送的終結(jié)地址。

            4.在awk中執(zhí)行shell命令行----嵌入函數(shù)system()
            system()是一個不適合字符或數(shù)字類型的嵌入函數(shù),該函數(shù)的功能是處理作為參數(shù)傳遞給它的字符串。system對這個參數(shù)的處理就是將其作為命令處理,也就是說將其當(dāng)作命令行一樣加以執(zhí)行。這使得用戶在自己的awk程序需要時可以靈活地執(zhí)行命令或腳本。
            例:下面的程序?qū)⑹褂胹ystem嵌入函數(shù)打印用戶編制好的報表文件,這個文件存放在名為myreport.txt的文件中。為簡約起見,我們只列出了其END部分:
            .
            .
            .
            END {close("myreport.txt");system("lp myreport.txt");}
            在這個示例中,我們首先使用close語句關(guān)閉了文件myreport.txt文件,然后使用system嵌入函數(shù)將myreport.txt送入打印機打印。


            十二
            附錄:

            1.awk的常規(guī)表達式元字符
            \ 換碼序列
            ^ 在字符串的開頭開始匹配
            $ 在字符串的結(jié)尾開始匹配
            . 與任何單個字符串匹配
            [ABC] 與[]內(nèi)的任一字符匹配
            [A-Ca-c] 與A-C及a-c范圍內(nèi)的字符匹配(按字母表順序)
            [^ABC] 與除[]內(nèi)的所有字符以外的任一字符匹配
            Desk|Chair 與Desk和Chair中的任一個匹配
            [ABC][DEF] 關(guān)聯(lián)。與A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一個字符。
            * 與A、B或C中任一個出現(xiàn)0次或多次的字符相匹配
            + 與A、B或C中任何一個出現(xiàn)1次或多次的字符相匹配
            ? 與一個空串或A、B或C在任何一個字符相匹配
            (Blue|Black)berry 合并常規(guī)表達式,與Blueberry或Blackberry相匹配

            2.awk算術(shù)運算符
            運算符 用途
            ------------------
            x^y x的y次冪
            x**y 同上
            x%y 計算x/y的余數(shù)(求模)
            x+y x加y
            x-y x減y
            x*y x乘y
            x/y x除y
            -y 負y(y的開關(guān)符號);也稱一目減
            ++y y加1后使用y(前置加)
            y++ 使用y值后加1(后綴加)
            --y y減1后使用y(前置減)
            y-- 使用后y減1(后綴減)
            x=y 將y的值賦給x
            x+=y 將x+y的值賦給x
            x-=y 將x-y的值賦給x
            x*=y 將x*y的值賦給x
            x/=y 將x/y的值賦給x x%=y 將x%y的值賦給x
            x^=y 將x^y的值賦給x
            x**=y 將x**y的值賦給x

            3.awk允許的測試:
            操作符 含義
            x==y x等于y
            x!=y x不等于y
            x>y x大于y
            x>=y x大于或等于y
            x<y x小于y
            x<=y x小于或等于y?
            x~re x匹配正則表達式re?
            x!~re x不匹配正則表達式re?

            4.awk的操作符(按優(yōu)先級升序排列)
            = 、+=、 -=、 *= 、/= 、 %=
            ||
            &&
            > >= < <= == != ~ !~
            xy (字符串連結(jié),'x''y'變成"xy")
            + -
            * / %
            ++ --

            5.awk內(nèi)置變量(預(yù)定義變量)
            說明:表中v項表示第一個支持變量的工具(下同):A=awk,N=nawk,P=POSIX awk,G=gawk
            V 變量 含義 缺省值
            --------------------------------------------------------
            N ARGC 命令行參數(shù)個數(shù)
            G ARGIND 當(dāng)前被處理文件的ARGV標志符
            N ARGV 命令行參數(shù)數(shù)組
            G CONVFMT 數(shù)字轉(zhuǎn)換格式 %.6g
            P ENVIRON UNIX環(huán)境變量
            N ERRNO UNIX系統(tǒng)錯誤消息
            G FIELDWIDTHS 輸入字段寬度的空白分隔字符串
            A FILENAME 當(dāng)前輸入文件的名字
            P FNR 當(dāng)前記錄數(shù)
            A FS 輸入字段分隔符 空格
            G IGNORECASE 控制大小寫敏感0(大小寫敏感)
            A NF 當(dāng)前記錄中的字段個數(shù)
            A NR 已經(jīng)讀出的記錄數(shù)
            A OFMT 數(shù)字的輸出格式 %.6g
            A OFS 輸出字段分隔符 空格
            A ORS 輸出的記錄分隔符 新行
            A RS 輸入的記錄他隔符 新行
            N RSTART 被匹配函數(shù)匹配的字符串首
            N RLENGTH 被匹配函數(shù)匹配的字符串長度
            N SUBSEP 下標分隔符 "\034"

            6.awk的內(nèi)置函數(shù)
            V 函數(shù) 用途或返回值
            ------------------------------------------------
            N gsub(reg,string,target) 每次常規(guī)表達式reg匹配時替換target中的string
            N index(search,string) 返回string中search串的位置
            A length(string) 求串string中的字符個數(shù)
            N match(string,reg) 返回常規(guī)表達式reg匹配的string中的位置
            N printf(format,variable) 格式化輸出,按format提供的格式輸出變量variable。
            N split(string,store,delim) 根據(jù)分界符delim,分解string為store的數(shù)組元素
            N sprintf(format,variable) 返回一個包含基于format的格式化數(shù)據(jù),variables是要放到串中的數(shù)據(jù)
            G strftime(format,timestamp) 返回一個基于format的日期或者時間串,timestmp是systime()函數(shù)返回的時間
            N sub(reg,string,target) 第一次當(dāng)常規(guī)表達式reg匹配,替換target串中的字符串
            A substr(string,position,len) 返回一個以position開始len個字符的子串
            P totower(string) 返回string中對應(yīng)的小寫字符
            P toupper(string) 返回string中對應(yīng)的大寫字符
            A atan(x,y) x的余切(弧度)
            N cos(x) x的余弦(弧度)
            A exp(x) e的x冪
            A int(x) x的整數(shù)部分
            A log(x) x的自然對數(shù)值
            N rand() 0-1之間的隨機數(shù)
            N sin(x) x的正弦(弧度)
            A sqrt(x) x的平方根
            A srand(x) 初始化隨機數(shù)發(fā)生器。如果忽略x,則使用system()
            G system() 返回自1970年1月1日以來經(jīng)過的時間(按秒計算)
            posted on 2011-04-24 12:18 C++技術(shù)中心 閱讀(28777) 評論(0)  編輯 收藏 引用 所屬分類: Linux 操作
            色妞色综合久久夜夜| 国产精品久久久久久久人人看| 丁香五月综合久久激情| 久久精品国产亚洲av麻豆蜜芽 | 亚洲精品国产字幕久久不卡| 香蕉99久久国产综合精品宅男自 | 99久久精品影院老鸭窝| 国产精品久久久久9999| 亚洲中文字幕无码久久2020| 嫩草影院久久国产精品| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲国产天堂久久综合| 久久综合亚洲色HEZYO社区| 欧美久久亚洲精品| 亚洲国产成人久久综合区| 久久久久国产一区二区| 亚洲AV无码久久精品色欲| 久久精品卫校国产小美女| 久久久久久精品久久久久| 亚洲精品无码久久久久sm| 亚洲AV日韩精品久久久久| 久久99国内精品自在现线| 久久久久久久综合综合狠狠| 久久久99精品成人片中文字幕| 久久影视综合亚洲| 久久久久久狠狠丁香| 久久精品三级视频| 久久久亚洲AV波多野结衣| 国产A三级久久精品| 久久久无码一区二区三区| 亚洲国产日韩欧美综合久久| 伊人久久综合精品无码AV专区| 久久精品午夜一区二区福利| 色综合久久综精品| 日产精品久久久久久久| 精品熟女少妇a∨免费久久| 久久久精品人妻无码专区不卡| 99精品久久久久久久婷婷| 99久久人人爽亚洲精品美女| 久久国产精品久久久| 91精品国产91久久综合|