婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Linux三劍客之awk命令使用詳解

Linux三劍客之awk命令使用詳解

熱門標簽:百度ai電銷機器人排名 百度地圖地圖標注客服多少 適用的400電話辦理 廣東電話機器人開戶 成都米蘭申請 哪種品牌的400電話申請 iphone地圖標注我的店鋪 旅游路書地圖標注 ai智能外呼系統是什么

awk簡介

awk其名稱得自于它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母。實際上 AWK 的確擁有自己的語言: AWK 程序設計語言 , 三位創建者已將它正式定義為“樣式掃描和處理語言”。它允許您創建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執行計算以及生成報表,還有無數其他的功能。

awk 是一種很棒的語言,它適合文本處理和報表生成,其語法較為常見,借鑒了某些語言的一些精華,如 C 語言等。在 linux 系統日常處理工作中,發揮很重要的作用,掌握了 awk將會使你的工作變的高大上。 awk 是三劍客的老大,利劍出鞘,必會不同凡響。

使用方法

awk '{pattern + action}' {filenames}

盡管操作可能會很復雜,但語法總是這樣,其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號({})不需要在程序中始終出現,但它們用于根據特定的模式對一系列指令進行分組。 pattern就是要表示的正則表達式,用斜杠括起來。

awk語言的最基本功能是在文件或者字符串中基于指定規則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。

通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執行相應的命令,來處理文本。

awk 的原理

通過一個簡短的命令,我們來了解其工作原理。

[root@Gin scripts]# awk '{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
.....................................................
 
[root@Gin scripts]# echo hhh|awk '{print "hello,world"}'
hello,world
 
[root@Gin scripts]# awk '{print "hiya"}' /etc/passwd
hiya
hiya
hiya
hiya
...............................................

 你將會見到/etc/passwd 文件的內容出現在眼前。現在,解釋 awk 做了些什么。調用 awk時,我們指定/etc/passwd 作為輸入文件。執行 awk 時,它依次對/etc/passwd 中的每一行執行 print 命令。

所有輸出都發送到 stdout,所得到的結果與執行 cat /etc/passwd 完全相同。
現在,解釋{ print }代碼塊。在 awk 中,花括號用于將幾塊代碼組合到一起,這一點類似于 C 語言。在代碼塊中只有一條 print 命令。在 awk 中,如果只出現 print 命令,那么將打印當前行的全部內容。
再次說明, awk 對輸入文件中的每一行都執行這個腳本。 

  

$ awk -F":" '{ print $1 }' /etc/passwd
$ awk -F":" '{ print $1 $3 }' /etc/passwd
$ awk -F":" '{ print $1 " " $3 }' /etc/passwd
$ awk -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd

 -F參數:指定分隔符,可指定一個或多個

print 后面做字符串的拼接

下面通過幾實例來了解下awk的工作原理:

實例一:只查看test.txt文件(100行)內第20到第30行的內容(企業面試)  

[root@Gin scripts]# awk '{if(NR>=20  NR=30) print $1}' test.txt   
20
21
22
23
24
25
26
27
28
29
30

 實例二:已知test.txt文件內容為:

[root@Gin scripts]# cat test.txt
I am Poe,my qq is 33794712

請從該文件中過濾出'Poe'字符串與33794712,最后輸出的結果為:Poe 33794712

[root@Gin scripts]# awk -F '[ ,]+' '{print $3" "$7}' test.txt
Poe 33794712

BEGIN 和 END 模塊

通常,對于每個輸入行, awk 都會執行每個腳本代碼塊一次。然而,在許多編程情況中,可能需要在 awk 開始處理輸入文件中的文本之前執行初始化代碼。對于這種情況, awk 允許您定義一個 BEGIN 塊。

因為 awk 在開始處理輸入文件之前會執行 BEGIN 塊,因此它是初始化 FS(字段分隔符)變量、打印頁眉或初始化其它在程序中以后會引用的全局變量的極佳位置。
awk 還提供了另一個特殊塊,叫作 END 塊。 awk 在處理了輸入文件中的所有行之后執行這個塊。通常, END 塊用于執行最終計算或打印應該出現在輸出流結尾的摘要信息。

實例一:統計/etc/passwd的賬戶人數

[root@Gin scripts]# awk '{count++;print $0;} END{print "user count is ",count}' passwd
root:x:0:0:root:/root:/bin/bash
..............................................
user count is  27

count是自定義變量。之前的action{}里都是只有一個print,其實print只是一個語句,而action{}可以有多個語句,以;號隔開。這里沒有初始化count,雖然默認是0,但是妥當的做法還是初始化為0:

[root@Gin scripts]# awk 'BEGIN {count=0;print "[start] user count is ",count} {count=count+1;print $0} END{print "[end] user count is ",count}' passwd
[start] user count is  0
root:x:0:0:root:/root:/bin/bash
...................................................................
[end] user count is  27

實例二:統計某個文件夾下的文件占用的字節數

[root@Gin scripts]# ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'
[end]size is  1489

如果以M為單位顯示:

[root@Gin scripts]# ll |awk 'BEGIN{size=0;} {size=size+$5;} END{print "[end]size is ",size/1024/1024,"M"}'   
[end]size is  0.00142002 M

awk運算符

awk 賦值運算符:a+5;等價于: a=a+5;其他同類

[root@Gin scripts]# awk 'BEGIN{a=5;a+=5;print a}'
10

awk邏輯運算符:

[root@Gin scripts]# awk 'BEGIN{a=1;b=2;print (a>2b>1,a=1||b>1)}'
0 1

判斷表達式 a>2b>1為真還是為假,后面的表達式同理

awk正則運算符:

[root@Gin scripts]# awk 'BEGIN{a="100testaa";if(a~/100/) {print "ok"}}'
ok

[root@Gin scripts]# echo|awk 'BEGIN{a="100testaaa"}a~/test/{print "ok"}'
ok

關系運算符:

如: > 可以作為字符串比較,也可以用作數值比較,關鍵看操作數如果是字符串就會轉換為字符串比較。兩個都為數字 才轉為數值比較。字符串比較:按照ascii碼順序比較。

[root@Gin scripts]# awk 'BEGIN{a="11";if(a>=9){print "ok"}}' #無輸出
[root@Gin scripts]# awk 'BEGIN{a=11;if(a>=9){print "ok"}}' 
ok
[root@Gin scripts]# awk 'BEGIN{a;if(a>=b){print "ok"}}'
ok

awk 算術運算符:

說明,所有用作算術運算符進行操作,操作數自動轉為數值,所有非數值都變為0。

[root@Gin scripts]# awk 'BEGIN{a="b";print a++,++a}'
0 2
[root@Gin scripts]# awk 'BEGIN{a="20b4";print a++,++a}'
20 22

這里的a++ , ++a與javascript語言一樣:a++是先賦值加++;++a是先++再賦值

三目運算符 ?:

[root@Gin scripts]# awk 'BEGIN{a="b";print a=="b"?"ok":"err"}'
ok
[root@Gin scripts]# awk 'BEGIN{a="b";print a=="c"?"ok":"err"}'
err

 常用 awk 內置變量

注:內置變量很多,參閱相關資料

字段分隔符 FS

FS="\t" 一個或多個 Tab 分隔

[root@Gin scripts]# cat tab.txt
ww   CC        IDD
[root@Gin scripts]# awk 'BEGIN{FS="\t+"}{print $1,$2,$3}' tab.txt
ww   CC        IDD

FS="[[:space:]+]" 一個或多個空白空格,默認的

[root@Gin scripts]# cat space.txt
we are    studing awk now!
[root@Gin scripts]# awk -F [[:space:]+] '{print $1,$2,$3,$4,$5}' space.txt
we are  
[root@Gin scripts]# awk -F [[:space:]+] '{print $1,$2}' space.txt
we are

FS="[" ":]+" 以一個或多個空格或:分隔

[root@Gin scripts]# cat hello.txt
root:x:0:0:root:/root:/bin/bash
[root@Gin scripts]# awk -F [" ":]+ '{print $1,$2,$3}' hello.txt
root x 0

字段數量 NF

[root@Gin scripts]# cat hello.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin:888
[root@Gin scripts]# awk -F ":" 'NF==8{print $0}' hello.txt
bin:x:1:1:bin:/bin:/sbin/nologin:888

記錄數量 NR

[root@Gin scripts]# ifconfig eth0|awk -F [" ":]+ 'NR==2{print $4}' ## NR==2也就是取第2行
192.168.17.129

RS 記錄分隔符變量
將 FS 設置成"\n"告訴 awk 每個字段都占據一行。通過將 RS 設置成"",還會告訴 awk每個地址記錄都由空白行分隔。

[root@Gin scripts]# cat recode.txt
Jimmy the Weasel
100 Pleasant Drive
San Francisco,CA 123456
 
Big Tony
200 Incognito Ave.
Suburbia,WA 64890
[root@Gin scripts]# cat awk.txt
#!/bin/awk
BEGIN {
        FS="\n"
        RS=""
}
{
        print $1","$2","$3
}
[root@Gin scripts]# awk -f awk.txt recode.txt
Jimmy the Weasel,100 Pleasant Drive,San Francisco,CA 123456
Big Tony,200 Incognito Ave.,Suburbia,WA 64890

OFS 輸出字段分隔符

[root@Gin scripts]# cat hello.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin:888
[root@Gin scripts]# awk 'BEGIN{FS=":"}{print $1","$2","$3}' hello.txt
root,x,0
bin,x,1
[root@Gin scripts]# awk 'BEGIN{FS=":";OFS="#"}{print $1,$2,$3}' hello.txt
root#x#0
bin#x#1

ORS 輸出記錄分隔符

[root@Gin scripts]# cat recode.txt
Jimmy the Weasel
100 Pleasant Drive
San Francisco,CA 123456
 
Big Tony
200 Incognito Ave.
Suburbia,WA 64890
[root@Gin scripts]# cat awk.txt
#!/bin/awk
BEGIN {
        FS="\n"
        RS=""
        ORS="\n\n"
}
{
        print $1","$2","$3
}
[root@Gin scripts]# awk -f awk.txt recode.txt
Jimmy the Weasel,100 Pleasant Drive,San Francisco,CA 123456
 
Big Tony,200 Incognito Ave.,Suburbia,WA 64890

awk 正則

 正則應用

規則表達式

awk '/REG/{action} ' file,/REG/為正則表達式,可以將$0 中,滿足條件的記錄送入到:action 進行處理

[root@Gin scripts]# awk '/root/{print $0}' passwd ##匹配所有包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
 
[root@Gin scripts]# awk -F: '$5~/root/{print $0}' passwd  ## 以分號作為分隔符,匹配第5個字段是root的行
root:x:0:0:root:/root:/bin/bash
 
[root@Gin scripts]# ifconfig eth0|awk 'BEGIN{FS="[[:space:]:]+"} NR==2{print $4}'
192.168.17.129

布爾表達式

awk '布爾表達式{action}' file 僅當對前面的布爾表達式求值為真時, awk 才執行代碼塊。

[root@Gin scripts]# awk -F: '$1=="root"{print $0}' passwd
root:x:0:0:root:/root:/bin/bash
[root@Gin scripts]# awk -F: '($1=="root")($5=="root") {print $0}' passwd
root:x:0:0:root:/root:/bin/bash

awk 的 if、循環和數組

條件語句
awk 提供了非常好的類似于 C 語言的 if 語句。

{
        if ($1=="foo"){
                if($2=="foo"){
                        print "uno"
                }else{
                        print "one"
                }
        }elseif($1=="bar"){
                print "two"
        }else{
                print "three"
        }
}

使用 if 語句還可以將代碼:

! /matchme/ { print $1 $3 $4 }

轉換成:

{
  if ( $0 !~ /matchme/ ) {
    print $1 $3 $4
  }
}

循環結構

我們已經看到了 awk 的 while 循環結構,它等同于相應的 C 語言 while 循環。 awk 還有"do...while"循環,它在代碼塊結尾處對條件求值,而不像標準 while 循環那樣在開始處求值。

它類似于其它語言中的"repeat...until"循環。以下是一個示例:
do...while 示例

{
    count=1do {
        print "I get printed at least once no matter what"
    } while ( count !=1 )
}

與一般的 while 循環不同,由于在代碼塊之后對條件求值, "do...while"循環永遠都至少執行一次。換句話說,當第一次遇到普通 while 循環時,如果條件為假,將永遠不執行該循環。

for 循環

awk 允許創建 for 循環,它就象 while 循環,也等同于 C 語言的 for 循環:

for ( initial assignment; comparison; increment ) {
    code block
}

以下是一個簡短示例:

for ( x=1;x=4;x++ ) {
    print "iteration", x
}

此段代碼將打印:

iteration1
iteration2
iteration3
iteration4

break 和 continue

此外,如同 C 語言一樣, awk 提供了 break 和 continue 語句。使用這些語句可以更好地控制 awk 的循環結構。以下是迫切需要 break 語句的代碼片斷:

while 死循環
while (1) {
print "forever and ever..."
}
while 死循環 1 永遠代表是真,這個 while 循環將永遠運行下去。

以下是一個只執行十次的循環:

#break 語句示例
x=1
while(1) {
  print "iteration", x
  if ( x==10 ) {
    break
  }
  x++
}

這里, break 語句用于“逃出”最深層的循環。 "break"使循環立即終止,并繼續執行循環代碼塊后面的語句。
continue 語句補充了 break,其作用如下:

x=1while (1) {
        if ( x==4 ) {
        x++
        continue
    }
    print "iteration", x
    if ( x>20 ) {
        break
    }
    x++
}

這段代碼打印"iteration1"到"iteration21", "iteration4"除外。如果迭代等于 4,則增加 x并調用 continue 語句,該語句立即使 awk 開始執行下一個循環迭代,而不執行代碼塊的其余部分。如同 break 一樣,

continue 語句適合各種 awk 迭代循環。在 for 循環主體中使用時, continue 將使循環控制變量自動增加。以下是一個等價循環:

for ( x=1;x=21;x++ ) {
    if ( x==4 ) {
        continue
    }
    print "iteration", x
}

在while 循環中時,在調用 continue 之前沒有必要增加 x,因為 for 循環會自動增加 x。

數組

AWK 中的數組都是關聯數組,數字索引也會轉變為字符串索引

{
    cities[1]=”beijing”
    cities[2]=”shanghai”
    cities[“three”]=”guangzhou”
    for( c in cities) {
        print cities[c]
    }
    print cities[1]
    print cities[“1”]
    print cities[“three”]
}

for…in 輸出,因為數組是關聯數組,默認是無序的。所以通過 for…in 得到是無序的數組。如果需要得到有序數組,需要通過下標獲得。

數組的典型應用

用 awk 中查看服務器連接狀態并匯總

netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a,s[a]}'
ESTABLISHED 1
LISTEN 20

統計 web 日志訪問流量,要求輸出訪問次數,請求頁面或圖片,每個請求的總大小,總訪問流量的大小匯總

awk '{a[$7]+=$10;++b[$7];total+=$10}END{for(x in a)print b[x],x,a[x]|"sort -rn -k1";print
"total size is :"total}' /app/log/access_log
total size is :172230
21 /icons/poweredby.png 83076
14 / 70546
8 /icons/apache_pb.gif 18608
a[$7]+=$10 表示以第 7 列為下標的數組( $10 列為$7 列的大小),把他們大小累加得到
$7 每次訪問的大小,后面的 for 循環有個取巧的地方, a 和 b 數組的下標相同,所以一
條 for 語句足矣

常用字符串函數

字符串函數的應用

替換

awk 'BEGIN{info="this is a test2010test!";gsub(/[0-9]+/,"!",info);print info}' this is a test!test!
在 info 中查找滿足正則表達式, /[0-9]+/ 用”!”替換,并且替換后的值,賦值給 info 未
給 info 值,默認是$0

查找

awk 'BEGIN{info="this is a test2010test!";print index(info,"test")?"ok":"no found";}'
ok #未找到,返回 0

匹配查找

awk 'BEGIN{info="this is a test2010test!";print match(info,/[0-9]+/)?"ok":"no found";}'
ok #如果查找到數字則匹配成功返回 ok,否則失敗,返回未找到

截取

awk 'BEGIN{info="this is a test2010test!";print substr(info,4,10);}'
s is a tes #從第 4 個 字符開始,截取 10 個長度字符串

分割

awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}' 4
4 test 1 this 2 is 3 a
#分割 info,動態創建數組 tA,awk for …in 循環,是一個無序的循環。 并不是從數組下標
1…n 開始

標簽:紹興 陜西 遼陽 茂名 玉林 大連 汕頭 泰安

巨人網絡通訊聲明:本文標題《Linux三劍客之awk命令使用詳解》,本文關鍵詞  Linux,三劍客,之,awk,命令,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux三劍客之awk命令使用詳解》相關的同類信息!
  • 本頁收集關于Linux三劍客之awk命令使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美精品国产精品| 日韩高清欧美激情| 久久精品一区二区| 国产婷婷一区二区| 亚洲一区二区在线免费观看视频| 六月婷婷色综合| 国产精品国产三级国产| 国产中文字幕一区| 韩国理伦片一区二区三区在线播放| 国产精品中文字幕欧美| 欧美亚洲动漫另类| 亚洲视频图片小说| 国产成人一区二区精品非洲| 欧美日本在线播放| 一区二区三区四区中文字幕| 国产成人av资源| 国产午夜精品美女毛片视频| 午夜精品久久久久久久久久久 | 在线成人午夜影院| 日韩亚洲欧美中文三级| 日韩精品一区二区在线| 国产亚洲欧美激情| 国产精品高清亚洲| 美女尤物国产一区| 欧美自拍丝袜亚洲| 久久久久久97三级| 日韩国产高清在线| 成人性视频网站| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲免费资源在线播放| 日韩成人一级片| 91蜜桃传媒精品久久久一区二区| 欧美日韩一级二级| 欧美视频精品在线| 国产精品免费看片| 久久se精品一区精品二区| 成人av网站大全| 久久久午夜精品| 精品一区免费av| 欧美精品777| 亚洲一区在线看| 欧美少妇一区二区| 日本不卡的三区四区五区| 国产精品小仙女| 欧美一区二区大片| 亚洲一区自拍偷拍| 国产精品资源在线看| 制服丝袜日韩国产| 亚洲一级电影视频| 在线日韩av片| 国产精品毛片大码女人| 色综合中文字幕| 欧美在线免费视屏| 亚洲国产精品精华液2区45| 国产乱人伦偷精品视频不卡| 欧美色涩在线第一页| 在线观看av不卡| 亚洲国产欧美在线| 日韩免费观看高清完整版| 国产精品一区二区在线看| 国产精品视频九色porn| 欧美影视一区二区三区| 蜜桃视频一区二区三区| 欧美激情一区二区在线| 成人国产精品免费网站| 亚洲国产精品一区二区www在线| 欧美日韩国产一二三| 国产伦精品一区二区三区在线观看| 国产区在线观看成人精品 | 色婷婷久久久久swag精品| 丝袜美腿成人在线| 亚洲乱码日产精品bd| 91精品久久久久久蜜臀| 91在线porny国产在线看| 精品一区二区三区久久久| 亚洲综合激情网| 亚洲精品国产高清久久伦理二区| 日韩欧美自拍偷拍| 欧美精品日韩精品| 欧美日韩一区 二区 三区 久久精品 | 亚洲精品一区在线观看| 欧美男男青年gay1069videost | 欧美xxxx在线观看| 成人自拍视频在线观看| 精品一区二区综合| 麻豆国产91在线播放| 婷婷开心激情综合| 美女网站在线免费欧美精品| 国产精品99精品久久免费| 欧美刺激午夜性久久久久久久| 国产日韩欧美一区二区三区综合| 91.xcao| 国产色爱av资源综合区| 国产精品午夜电影| 亚洲最大的成人av| 美女任你摸久久| 国产999精品久久久久久| 国产成人在线色| 欧美色窝79yyyycom| 久久亚洲免费视频| 一区二区三区在线视频免费观看| 偷窥国产亚洲免费视频| 极品销魂美女一区二区三区| 成人av动漫在线| 日韩无一区二区| 国产日韩欧美一区二区三区综合| 国产精品视频线看| 日本中文字幕一区二区有限公司| 美日韩黄色大片| 欧美中文字幕一区二区三区 | 91毛片在线观看| 欧美一级欧美三级| 亚洲天堂免费看| 久久99精品久久久久久动态图| 成人做爰69片免费看网站| 欧美精品乱人伦久久久久久| 久久婷婷国产综合国色天香| 午夜私人影院久久久久| 欧美日韩视频在线一区二区| 欧美精品一区二区蜜臀亚洲| 国产精品素人一区二区| 日韩精品色哟哟| 在线不卡中文字幕播放| 亚洲精选免费视频| 91免费看视频| 亚洲电影视频在线| 日韩欧美一区在线| 成人一道本在线| 国产精品久久久99| 91麻豆国产自产在线观看| 亚洲另类在线一区| 精品蜜桃在线看| 99re热视频这里只精品| 亚洲综合在线电影| 欧美成人精品福利| 99久久er热在这里只有精品66| 欧美高清在线一区二区| 91小视频在线免费看| 亚洲精品国产无天堂网2021| 欧美最猛性xxxxx直播| 免费av成人在线| 中文字幕精品综合| 欧美高清dvd| 97久久精品人人澡人人爽| 欧美日韩色综合| 国内成人免费视频| 亚洲午夜激情网页| 国产女主播在线一区二区| 麻豆国产一区二区| 亚洲国产中文字幕| 亚洲特级片在线| 久久精品一区二区三区四区| 色综合久久久久综合体桃花网| 一区二区三区色| 久久免费美女视频| 一本色道a无线码一区v| 美国十次了思思久久精品导航| 国产亚洲精品超碰| 久久久久国产精品麻豆ai换脸 | 成人精品免费视频| 国产资源精品在线观看| 久久激情综合网| 国产很黄免费观看久久| 盗摄精品av一区二区三区| 欧美xxxxx牲另类人与| 综合自拍亚洲综合图不卡区| 欧美麻豆精品久久久久久| 欧美视频在线播放| 在线亚洲+欧美+日本专区| 不卡视频在线观看| av一本久道久久综合久久鬼色| 极品销魂美女一区二区三区| 蜜桃av一区二区| 国产一区二区三区美女| 国产aⅴ精品一区二区三区色成熟| 国产专区综合网| 成人性色生活片| 欧美日韩综合不卡| 日本福利一区二区| 色悠久久久久综合欧美99| 日韩一区二区在线免费观看| 久久亚区不卡日本| 一区二区三区中文字幕电影 | 精品动漫一区二区三区在线观看| 91精品国产欧美一区二区18| 日韩一区二区三| 亚洲国产成人午夜在线一区| 亚洲欧美激情插 | 欧美午夜电影一区| 欧美日韩精品一区二区| 欧美一区二区高清| 国产精品色哟哟| 极品销魂美女一区二区三区| 99久久婷婷国产精品综合| 欧美日韩精品一区二区三区蜜桃 | 亚洲日本电影在线| 国产精品一区二区在线观看不卡| 欧日韩精品视频| 亚洲欧洲成人精品av97| 欧美日韩中文国产|