日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

流编辑器sed和gawk

發(fā)布時間:2024/3/26 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 流编辑器sed和gawk 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
sed編輯器是一種流編輯器,區(qū)別于交互式vim編輯器,處理數(shù)據(jù)更快。 注意:sed編輯器并不會修改文本文件的數(shù)據(jù)。它只會將修改后的數(shù)據(jù)發(fā)送到STDOUT! sed 命令的格式如下:sed options script file (sed 選項 腳本 文件) sed 命令選項:選 項 描 述-e script 在處理輸入時,將 script 中指定的命令添加到已有的命令中-f file 在處理輸入時,將 file 中指定的命令添加到已有的命令中-n 不產(chǎn)生命令輸出,使用 print 命令來完成輸出 1. 在命令行定義編輯器命令echo "This is a test" | sed 's/test/big test/' -- This is a big test s命令會用斜線間指定的第二個文本字符串來替換第一個文本字符串模式。在本例中是 big test 替換了 test sed 's/dog/cat/' data1.txt -- 將data1.txt中的dog替換成cat 2. 在命令行使用多個編輯器命令( -e 選項)sed -e 's/brown/green/; s/dog/cat/' data1.txt -- The quick green fox jumps over the lazy cat.$ sed -e ' -- 不用分號分隔> s/brown/green/> s/fox/elephant/> s/dog/cat/' data1.txt 3. 從文件中讀取編輯器命令( -f 選項)$ cat script1.seds/brown/green/s/fox/elephant/s/dog/cat/$$ sed -f script1.sed data1.txtThe quick green elephant jumps over the lazy cat.The quick green elephant jumps over the lazy cat.The quick green elephant jumps over the lazy cat.The quick green elephant jumps over the lazy cat.$gawk編輯器 gawk 命令的格式如下:gawk options program file gawk選項:選 項 描 述-F fs 指定行中劃分數(shù)據(jù)字段的字段分隔符-f file 從指定的文件中讀取程序-v var=value 定義gawk程序中的一個變量及其默認值-mf N 指定要處理的數(shù)據(jù)文件中的最大字段數(shù)-mr N 指定數(shù)據(jù)文件中的最大數(shù)據(jù)行數(shù)-W keyword 指定gawk的兼容模式或警告等級 1. 從命令行讀取程序腳本腳本命令需要放入{}中。由于 gawk 命令行假定腳本是單個文本字符串,你還必須將腳本放到單引號中gawk '{print "Hello World!"}' -- 無論輸入什么回車都是Hello World 2.使用數(shù)據(jù)字段變量$0 代表整個文本行;$1 代表文本行中的第1個數(shù)據(jù)字段;$2 代表文本行中的第2個數(shù)據(jù)字段;$n 代表文本行中的第n個數(shù)據(jù)字段。如:$ cat data2.txt -- gawk中默認的字段分隔符是任意的空白字符(例如空格或制表符)One line of test text.Two lines of test text.Three lines of test text.$$ gawk '{print $1}' data2.txtOneTwoThree$gawk -F: '{print $1}' /etc/passwd -- 如果你要讀取采用了其他字段分隔符的文件,可以用 -F 選項指定,-F:并以冒號作為分隔符 3.在程序腳本中使用多個命令echo "My name is Rich" | gawk '{$4="Christine"; print $0}' -- My name is Christine$ gawk '{ -- 也可以逐次輸入> $4="Christine"> print $0}'My name is RichMy name is Christine$ 4.從文件中讀取程序( -f 選項指定文件)$ cat script2.gawk{print $1 "'s home directory is " $6}$$ gawk -F: -f script2.gawk /etc/passwdroot's home directory is /rootbin's home directory is /bindaemon's home directory is /sbinadm's home directory is /var/admlp's home directory is /var/spool/lpd[...]Christine's home directory is /home/ChristineSamantha's home directory is /home/SamanthaTimothy's home directory is /home/Timothy$$ cat script3.gawk -- 可以在程序文件中指定多條命令。只要一條命令放一行即可,不需要用分號{text = "'s home directory is "print $1 text $6 -- 注意,gawk程序在引用變量值時并未像shell腳本一樣使用美元符}$$ gawk -F: -f script3.gawk /etc/passwdroot's home directory is /rootbin's home directory is /bindaemon's home directory is /sbinadm's home directory is /var/admlp's home directory is /var/spool/lpd[...]Christine's home directory is /home/ChristineSamantha's home directory is /home/SamanthaTimothy's home directory is /home/Timothy$ 5.在處理數(shù)據(jù)前運行腳本(begin)$ cat data3.txtLine 1Line 2Line 3$$ gawk 'BEGIN {print "The data3 File Contents:"}> {print $0}' data3.txtThe data3 File Contents:Line 1Line 2Line 3$ 6.在處理數(shù)據(jù)后運行腳本(end)$ gawk 'BEGIN {print "The data3 File Contents:"}> {print $0}> END {print "End of File"}' data3.txt$ cat script4.gawkBEGIN {print "The latest list of users and shells"print " UserID \t Shell"print "-------- \t -------"FS=":"}{print $1 " \t " $7}END {print "This concludes the listing"}$$ gawk -f script4.gawk /etc/passwd #sed編輯器基礎------------------------- 一、替換選項(s)1.替換標記格式:s/pattern/replacement/flags有4種可用的替換標記:數(shù)字,表明新文本將替換第幾處模式匹配的地方;g ,表明新文本將會替換所有匹配的文本;p ,表明原先行的內(nèi)容要打印出來;w file ,將替換的結果寫到文件中。測試:$ cat data4.txtThis is a test of the test script.This is a different line.$$ sed 's/test/trial/' data4.txtThis is a trial of the test script. -- 默認情況下它只替換每行中出現(xiàn)的第一處testThis is the second trial of the test script.$$ sed 's/test/trial/2' data4.txt -- 替換了第二處的testThis is a test of the trial script.This is the second test of the trial script.$$ sed 's/test/trial/g' data4.txt -- 替換了所有testThis is a trial of the trial script.This is the second trial of the trial script.$$ sed -n 's/test/trial/p' data5.txt -- -n 選項將禁止sed編輯器輸出。但 p 替換標記會輸出修改過的行。將二者配合使用的效果就是只輸出被替換命令修改過的行。This is a trial line.$$ sed 's/test/trial/w test.txt' data5.txt -- 更改過的行將再輸出到文件test.txtThis is a trial line.This is a different line.$$ cat test.txtThis is a trial line.$2.替換字符$ sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd -- 由于正斜線通常用作字符串分隔符,因而如果它出現(xiàn)在了模式文本中的話,必須用反斜線來轉義。麻煩!可以使用下面的方式。$ sed 's!/bin/bash!/bin/csh!' /etc/passwd -- 感嘆號被用作字符串分隔符 二、使用地址1. 數(shù)字方式的行尋址sed '2s/dog/cat/' data1.txt -- 只改變第二行sed '2,3s/dog/cat/' data1.txt -- 改變第2到3行這個區(qū)間的[2,3]sed '2,$s/dog/cat/' data1.txt -- 改變第2到末尾這個區(qū)間[2,$]2. 使用文本模式過濾器$ grep Samantha /etc/passwdSamantha:x:502:502::/home/Samantha:/bin/bash$$ sed '/Samantha/s/bash/csh/' /etc/passwd -- 必須用正斜線將要指定的 pattern 封起來[...]Samantha:x:502:502::/home/Samantha:/bin/csh[...]$3. 命令組合$ sed '2{ -- 單行上執(zhí)行多條命令,可以用花括號將多條命令組合在一起> s/fox/elephant/> s/dog/cat/> }' data1.txtThe quick brown fox jumps over the lazy dog.The quick brown elephant jumps over the lazy cat.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.$ 三、刪除行(d)$ cat data1.txtThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dog$$ sed 'd' data1.txt -- 刪除所有行$$ sed '3d' data6.txt -- 刪除第三行$$ sed '2,3d' data6.txt -- 刪除2至3行$$ sed '/number 1/d' data6.txt -- 刪除‘number 1’的行$$ sed '/number 1/,/number 3/d' data7.txt -- ‘number 1’開啟刪除,‘number 3’結束刪除。如果后面出現(xiàn)‘number 1’將再次開啟,若未找到‘number 3’結束行將會刪除之后所有$ 四、插入和附加文本插入( insert )命令( i )會在指定行前增加一個新行;附加( append )命令( a )會在指定行后增加一個新行。$ echo "Test Line 2" | sed 'i\Test Line 1' -- 當使用插入命令時,文本會出現(xiàn)在數(shù)據(jù)流文本的前面Test Line 1 Test Line 2 $ echo "Test Line 2" | sed 'a\Test Line 1' -- 當使用附加命令時,文本會出現(xiàn)在數(shù)據(jù)流文本的后面Test Line 2Test Line 1$ sed '3i\> This is an inserted line.' data6.txt -- 將一個新行插入到數(shù)據(jù)流第三行前This is line number 1.This is line number 2.This is an inserted line.This is line number 3.This is line number 4.$ sed '3a\> This is an appended line.' data6.txt -- 將一個新行附加到數(shù)據(jù)流中第三行后This is line number 1.This is line number 2.This is line number 3.This is an appended line.This is line number 4.$ sed '$a\> This is a new line of text.' data6.txt -- 將一個新行附加到數(shù)據(jù)流末This is line number 1.This is line number 2.This is line number 3.This is line number 4.This is a new line of text. 五、修改行修改( change )命令允許修改數(shù)據(jù)流中整行文本的內(nèi)容。它跟插入和附加命令的工作機制一樣。$ sed '3c\> This is a changed line of text.' data6.txt -- 修改第三行This is line number 1.This is line number 2.This is a changed line of text.This is line number 4.$ sed '/number 3/c\> This is a changed line of text.' data6.txt -- 修改匹配模式的行This is line number 1.This is line number 2.This is a changed line of text.This is line number 4.$ sed '2,3c\> This is a new line of text.' data6.txt -- 修改區(qū)間行,結果不如所愿。替換了數(shù)據(jù)流中的兩行文本This is line number 1.This is a new line of text.This is line number 4. 六、轉換命令轉換( transform )命令( y )是唯一可以處理單個字符的sed編輯器命令。格式:sed y/inchars/outchars/ 轉換命令會對 inchars 和 outchars 值進行一對一的映射,所以長度要等同。 inchars 中的第一個字符會被轉換為 outchars 中的第一個字符,第二個字符會被轉換成 outchars 中的第二個字符$ echo "This 1 is a test of 1 try." | sed 'y/123/456/' This 4 is a test of 4 try. -- 1轉換成了4$ 七、打印p 命令用來打印文本行;等號( = )命令用來打印行號;l (小寫的L)命令用來列出行。1. 打印行$ echo "this is a test" | sed 'p' -- 打印輸出的一行this is a testthis is a test$$ cat data6.txtThis is line number 1.This is line number 2.This is line number 3.This is line number 4.$ sed -n '/number 3/p' data6.txt -- 打印命令最常見的用法是打印包含匹配文本模式的行This is line number 3.$$ sed -n '2,3p' data6.txt -- 打印[2,3]行This is line number 2.This is line number 3.$$ sed -n '/3/{ -- sed編輯器命令會查找包含數(shù)字3的行,然后執(zhí)行兩條命令。首先,腳本用 p 命令來打印出原始行;然后它用 s 命令替換文本,并用 p 標記打印出替換結果> p> s/line/test/p> }' data6.txtThis is line number 3.This is test number 3.$2. 打印行號等號命令會打印行在數(shù)據(jù)流中的當前行號$ cat data1.txtThe quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.$$ sed '=' data1.txt1The quick brown fox jumps over the lazy dog.2The quick brown fox jumps over the lazy dog.3The quick brown fox jumps over the lazy dog.4The quick brown fox jumps over the lazy dog.$$ sed -n '/number 4/{ -- 利用 -n 選項,你就能讓sed編輯器只顯示包含匹配文本模式的行的行號和文本> => p> }' data6.txt4This is line number 4.$3. 列出行列出( list )命令( l )可以打印數(shù)據(jù)流中的文本和不可打印的ASCII字符$ cat data9.txtThis line contains tabs.$$ sed -n 'l' data9.txtThis\tline\tcontains\ttabs.$ -- 制表符的位置會使用 \t 來顯示。行尾的美元符表示換行符。$$ cat data10.txtThis line contains an escape character.$$ sed -n 'l' data10.txtThis line contains an escape character. \a$ -- data10.txt文本文件包含了一個轉義控制碼來產(chǎn)生鈴聲。當用 cat 命令來顯示文本文件時,你看不到轉義控制碼,只能聽到聲音(如果你的音箱打開的話)。但是,利用列出命令,你就能顯示出所使用的轉義控制碼$ 八、使用 sed 處理文件1. 寫入文件(write,w)格式:[address]w filename -- filename 參數(shù)指定了數(shù)據(jù)文件的絕對路徑或相對路徑,address指的是外部文件data6.txt$ sed '1,2w test.txt' data6.txt -- 區(qū)間使用。如果你不想讓行顯示到 STDOUT 上,你可以用 sed 命令的 -n 選項This is line number 1.This is line number 2.This is line number 3.This is line number 4.$$ cat test.txtThis is line number 1.This is line number 2.$$ cat data11.txtBlum, R BrowncoatMcGuiness, A AllianceBresnahan, C BrowncoatHarken, C Alliance$$ sed -n '/Browncoat/w Browncoats.txt' data11.txt -- 模式使用。$$ cat Browncoats.txtBlum, R BrowncoatBresnahan, C Browncoat$2. 從文件讀取數(shù)據(jù)(read,r)格式:[address]r filename$ cat data12.txtThis is an added line.This is the second added line.$$ sed '3r data12.txt' data6.txt -- 第三行后This is line number 1.This is line number 2.This is line number 3.This is an added line.This is the second added line.This is line number 4.$$ sed '/number 2/r data12.txt' data6.txtThis is line number 1.This is line number 2.This is an added line.This is the second added line.This is line number 3.This is line number 4.$$ sed '$r data12.txt' data6.txtThis is line number 1.This is line number 2.This is line number 3.This is line number 4.This is an added line.This is the second added line.$$ cat notice.stdWould the following people:LISTplease report to the ship's captain.$$ sed '/LIST/{ -- 在list后添加,并刪除list> r data11.txt> d> }' notice.stdWould the following people:Blum, R BrowncoatMcGuiness, A AllianceBresnahan, C BrowncoatHarken, C Allianceplease report to the ship's captain.$sed深入 #多行命令需要對跨多行的數(shù)據(jù)執(zhí)行特定操作。如一條短語分布在兩行中。三個可用來處理多行文本的特殊命令:N :將數(shù)據(jù)流中的下一行加進來創(chuàng)建一個多行組(multiline group)來處理。D :刪除多行組中的一行。P :打印多行組中的一行。next 命令1. 單行的 next 命令: n 命令會讓sed編輯器移動到文本的下一行。$ cat data1.txtThis is the header line.This is a data line.This is the last line.$ $ sed '/header/{n ; d}' data1.txt -- 找到header會刪除模式匹配成功的下一行This is the header line.This is a data line.This is the last line.$2. 合并文本行:多行版本的 next 命令(用大寫N)會將下一文本行添加到模式空間中已有的文本后,作為一行處理。$ cat data4.txtOn Tuesday, the Linux SystemAdministrator's group meeting will be held.All System Administrators should attend.$$ sed '> s/System Administrator/Desktop User/ -- 將單行命令放前面可以解決最后一行找不到下一行合并的情況> N> s/System\nAdministrator/Desktop\nUser/> ' data4.txtOn Tuesday, the Linux DesktopUser's group meeting will be held.All Desktop Users should attend.$多行刪除命令sed編輯器提供了多行刪除命令 D ,它只刪除模式空間中的第一行。該命令會刪除到換行符(含換行符)為止的所有字符$ sed 'N ; /System\nAdministrator/D' data4.txtAdministrator's group meeting will be held.All System Administrators should attend.$ cat data5.txtThis is the header line.This is a data line.This is the last line.$$ sed '/^$/{N ; /header/D}' data5.txt -- 刪除數(shù)據(jù)流中出現(xiàn)在第一行前的空白行This is the header line.This is a data line.This is the last line.$多行打印命令多行打印命令( P )沿用了同樣的方法。它只打印多行模式空間中的第一行$ cat data3.txtOn Tuesday, the Linux SystemAdministrator's group meeting will be held.All System Administrators should attend.Thank you for your attendance.$$ sed -n 'N ; /System\nAdministrator/P' data3.txtOn Tuesday, the Linux System #保持空間模式空間(pattern space)是一塊活躍的緩沖區(qū),sed編輯器有另一塊稱作保持空間(hold space)的緩沖區(qū)域。sed編輯器的保持空間命令命 令 描 述h 將模式空間復制到保持空間H 將模式空間附加到保持空間g 將保持空間復制到模式空間G 將保持空間附加到模式空間x 交換模式空間和保持空間的內(nèi)容$ cat data2.txtThis is the header line.This is the first data line.This is the second data line.This is the last line.$$ sed -n '/first/ {h ; p ; n ; p ; g ; p }' data2.txtThis is the first data line.This is the second data line.This is the first data line.$$ sed -n '/first/ {h ; n ; p ; g ; p }' data2.txt -- 合理使用,以相反方向輸出這兩行This is the second data line.This is the first data line.$ #排除命令感嘆號命令( ! )用來排除( negate )命令$ sed -n '/header/!p' data2.txt -- 除了包含單詞header那一行外,文件中其他所有的行都被打印出來了This is the first data line.This is the second data line.This is the last line.$$ sed '$!N; -- 最后一行,不執(zhí)行N命令> s/System\nAdministrator/Desktop\nUser/> s/System Administrator/Desktop User/> ' data4.txtOn Tuesday, the Linux DesktopUser's group meeting will be held.All Desktop Users should attend.$$ cat data2.txtThis is the header line.This is the first data line.This is the second data line.This is the last line.$$ sed -n '{1!G ; h ; $p }' data2.txt -- 倒序輸出(未理解),可以使用tac達到相同效果cat data2.txtThis is the last line.This is the second data line.This is the first data line.This is the header line.$ #改變流sed編輯器會從腳本的頂部開始,一直執(zhí)行到腳本的結尾。sed編輯器提供了一個方法來改變命令腳本的執(zhí)行流程分支( branch )命令 b的格式如下:[ address ]b [ label ]address 參數(shù)決定了哪些行的數(shù)據(jù)會觸發(fā)分支命令。 label 參數(shù)定義了要跳轉到的位置。如果沒有加 label 參數(shù),跳轉命令會跳轉到腳本的結尾。$ cat data2.txtThis is the header line.This is the first data line.This is the second data line.This is the last line.$$ sed '{2,3b ; s/This is/Is this/ ; s/line./test?/}' data2.txt -- 分支命令在數(shù)據(jù)流中的第2行和第3行處跳過了兩個替換命令Is this the header test?This is the first data line.This is the second data line.Is this the last test?$ 要是不想直接跳到腳本的結尾,可以為分支命令定義一個要跳轉到的標簽。標簽以冒號開始,最多可以是7個字符長度。$ sed '{/first/b jump1 ; s/This is the/No jump on/ -- 自定義標簽。標簽允許你跳過地址匹配處的命令,但仍然執(zhí)行腳本中的其他命令> :jump1 > s/This is the/Jump here on/}' data2.txtNo jump on header lineJump here on first data lineNo jump on second data lineNo jump on last line$ $ echo "This, is, a, test, to, remove, commas." | sed -n '{> :start -- 也可以跳轉到腳本中靠前面的標簽上,這樣就達到了循環(huán)的效果> s/,//1p> /,/b start -- 設置了匹配模式,沒有(,)循環(huán)就會終止> }'This is, a, test, to, remove, commas.This is a, test, to, remove, commas.This is a test, to, remove, commas.This is a test to, remove, commas.This is a test to remove, commas.This is a test to remove commas.$ 測試類似于分支命令,測試( test )命令( t )也可以用來改變sed編輯器腳本的執(zhí)行流程格式:[ address ]t [ label ] $ sed '{> s/first/matched/> t -- first改行不再執(zhí)行> s/This is the/No match on/> }' data2.txtNo match on header lineThis is the matched data lineNo match on second data lineNo match on last line$ $ echo "This, is, a, test, to, remove, commas. " | sed -n '{> :start> s/,//1p> t start -- 當無需替換時,測試命令不會跳轉而是繼續(xù)執(zhí)行剩下的腳本> }'This is, a, test, to, remove, commas.This is a, test, to, remove, commas.This is a test, to, remove, commas.This is a test to, remove, commas.This is a test to remove, commas.This is a test to remove commas.$ #模式替代& 符號不管模式匹配的是什么樣的文本,你都可以在替代模式中使用 & 符號來使用這段文本$ echo "The cat sleeps in his hat." | sed 's/.at/"&"/g'The "cat" sleeps in his "hat".替代單獨的單詞sed編輯器用圓括號來定義替換模式中的子模式。替代字符由反斜線和數(shù)字組成,第一個子模式分配字符 \1 ,給第二個子模式分配字符 \2 ,依此類推。$ echo "The System Administrator manual" | sed '> s/\(System\) Administrator/\1 User/' -- \1 來提取第一個匹配的子模式The System User manual $ echo "1234567" | sed '{ -- 大數(shù)字中插入逗號> :start> s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/> t start> }'1,234,567 #腳本中使用sed使用包裝腳本$ cat sw_cs.shsed -n '{ 1!G ; h ; $p }' $1$$ sh sw_cs.sh data2.txtThis is the last line.This is the second data line.This is the first data line.This is the header line.重定向 sed 的輸出$ cat fact.shfactorial=1counter=1number=$1#while [ $counter -le $number ]dofactorial=$[ $factorial * $counter ]counter=$[ $counter + 1 ]done#result=$(echo $factorial | sed '{:starts/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/t start}')#echo "The result is $result"#$$ sh fact.sh 20The result is 2,432,902,008,176,640,000$ #創(chuàng)建 sed 實用工具1.加倍行間距$ sed 'G' data2.txtThis is the header line.This is the first data line.This is the second data line.This is the last line.$$ sed '$!G' data2.txtThis is the header line.This is the first data line.This is the second data line.This is the last line. -- 最后一行跳過G$2.對可能含有空白行的文件加倍行間距$ cat data6.txtThis is line one.This is line two.This is line three.This is line four.$ $ sed '/^$/d ; $!G' data6.txtThis is line one.This is line two.This is line three.This is line four.$ 3.給文件中的行編號$ sed '=' data2.txt | sed 'N; s/\n/ /'1 This is the header line.2 This is the first data line.3 This is the second data line.4 This is the last line.4.打印末尾行(打印末尾10行)$ cat data7.txtThis is line 1.This is line 2.This is line 3.This is line 4.This is line 5.This is line 6.This is line 7.This is line 8.This is line 9.This is line 10.This is line 11.This is line 12.This is line 13.This is line 14.This is line 15.$$ sed '{> :start> $q ; N ; 11,$D> b start> }' data7.txtThis is line 6.This is line 7.This is line 8.This is line 9.This is line 10.This is line 11.This is line 12.This is line 13.This is line 14.This is line 15.$5.刪除行刪除連續(xù)的空白行:$ sed '/./,/^$/!d' data8.txt刪除開頭的空白行:$ sed '/./,$!d' data9.txt刪除結尾的空白行:$ sed '{:start/ ^\n*$/{$d; N; b start }}'6.刪除 HTML 標簽$ sed 's/<[^>]*>//g ; /^$/d' data11.txtgawk深入 #使用變量一、內(nèi)建變量1. 字段和記錄分隔符變量gawk數(shù)據(jù)字段和記錄變量變 量 描 述FIELDWIDTHS 由空格分隔的一列數(shù)字,定義了每個數(shù)據(jù)字段確切寬度FS 輸入字段分隔符RS 輸入記錄分隔符OFS 輸出字段分隔符ORS 輸出記錄分隔符FS與OPS的使用$ cat data1data11,data12,data13,data14,data15data21,data22,data23,data24,data25data31,data32,data33,data34,data35$ gawk 'BEGIN{FS=","} {print $1,$2,$3}' data1 -- 默認情況下,gawk將 OFS 設成一個空格data11 data12 data13data21 data22 data23data31 data32 data33$ gawk 'BEGIN{FS=","; OFS="-"} {print $1,$2,$3}' data1 -- 修改輸出分隔符值data11-data12-data13data21-data22-data23data31-data32-data33FIELDWIDTHS 變量定義了四個字段,根據(jù)已定義好的字段長度來分割$ cat data1b1005.3247596.37115-2.349194.0005810.1298100.1$ gawk 'BEGIN{FIELDWIDTHS="3 5 2 5"}{print $1,$2,$3,$4}' data1b100 5.324 75 96.37115 -2.34 91 94.00058 10.12 98 100.1RS與ORS的使用:默認情況下,gawk將 RS 和 ORS 設為換行符$ cat data2Riley Mullen123 Main StreetChicago, IL 60601(312)555-1234Frank Williams456 Oak StreetIndianapolis, IN 46201(317)555-9876Haley Snell4231 Elm StreetDetroit, MI 48201(313)555-4938$ gawk 'BEGIN{FS="\n"; RS=""} {print $1,$4}' data2 -- 現(xiàn)在gawk把文件中的每行都當成一個字段,把空白行當作記錄分隔符Riley Mullen (312)555-1234Frank Williams (317)555-9876Haley Snell (313)555-49382. 數(shù)據(jù)變量更多的gawk內(nèi)建變量變 量 描 述ARGC 當前命令行參數(shù)個數(shù)ARGIND 當前文件在 ARGV 中的位置ARGV 包含命令行參數(shù)的數(shù)組CONVFMT 數(shù)字的轉換格式(參見 printf 語句),默認值為 %.6 gENVIRON 當前shell環(huán)境變量及其值組成的關聯(lián)數(shù)組ERRNO 當讀取或關閉輸入文件發(fā)生錯誤時的系統(tǒng)錯誤號FILENAME 用作gawk輸入數(shù)據(jù)的數(shù)據(jù)文件的文件名FNR 當前數(shù)據(jù)文件中的數(shù)據(jù)行數(shù)IGNORECASE 設成非零值時,忽略 gawk 命令中出現(xiàn)的字符串的字符大小寫NF 數(shù)據(jù)文件中的字段總數(shù)NR 已處理的輸入記錄數(shù)OFMT 數(shù)字的輸出格式,默認值為 %.6 gRLENGTH 由 match 函數(shù)所匹配的子字符串的長度RSTART 由 match 函數(shù)所匹配的子字符串的起始位置ARGC與ARGV$ gawk 'BEGIN{print ARGC,ARGV[1]}' data1 -- ARGC 變量表明命令行上有兩個參數(shù)。 ARGV 數(shù)組從索引 0 開始。ENVIRON 變量,使用關聯(lián)數(shù)組來提取shell環(huán)境變量$ gawk '> BEGIN{> print ENVIRON["HOME"]> print ENVIRON["PATH"]> }'/home/rich/usr/local/bin:/bin:/usr/bin:/usr/X11R6/binNF 變量可以讓你在不知道具體位置的情況下指定記錄中的最后一個數(shù)據(jù)字段$ gawk 'BEGIN{FS=":"; OFS=":"} {print $1,$NF}' /etc/passwd -- rich:/bin/bashtesty:/bin/cshmark:/bin/bashdan:/bin/bashmike:/bin/bashtest:/bin/bashFNR 和 NR 變量雖然類似,但又略有不同。$ gawk '> BEGIN {FS=","}> {print $1,"FNR="FNR,"NR="NR}> END{print "There were",NR,"records processed"}' data1 data1 data11 FNR=1 NR=1data21 FNR=2 NR=2data31 FNR=3 NR=3data11 FNR=1 NR=4 -- FNR 變量的值在 gawk 處理第二個數(shù)據(jù)文件時被重置了,而 NR 變量則在處理第二個數(shù)據(jù)文件時繼續(xù)計數(shù)。data21 FNR=2 NR=5data31 FNR=3 NR=6There were 6 records processed2 data1二、自定義變量gawk自定義變量名可以是任意數(shù)目的字母、數(shù)字和下劃線,但不能以數(shù)字開頭。注意: gawk 變量名區(qū)分大小寫!1. 在腳本中給變量賦值(值可以是數(shù)字、文本,賦值支持數(shù)學算式)$ gawk '> BEGIN{> testing="This is a test"> print testing> testing=45> print testing> }'This is a test45 $ gawk 'BEGIN{x=4; x= x * 2 + 3; print x}'11 2. 在命令行上給變量賦值$ cat script1BEGIN{FS=","}{print $n}$ gawk -f script1 n=2 data1 -- 顯示了文件的第二個數(shù)據(jù)字段data12data22data32用 -v 命令行參數(shù),它允許你在 BEGIN 代碼之前設定變量,否則設定的變量值在begin部分不可用。-v 命令行參數(shù)必須放在腳本代碼之前。$ gawk -v n=3 -f script2 data1The starting value is 3data13data23data33 #處理數(shù)組定義數(shù)組變量格式:var[index] = element 其中 var 是變量名,index 是關聯(lián)數(shù)組的索引值,element 是數(shù)據(jù)元素值$ gawk 'BEGIN{> capital["Illinois"] = "Springfield"> print capital["Illinois"]> }'Springfield$$ gawk 'BEGIN{> var[1] = 34> var[2] = 3> total = var[1] + var[2]> print total> }'37 遍歷數(shù)組變量gwak遍歷格式:for (var in array){statements}變量中存儲的是索引值而不是數(shù)組元素值$ gawk 'BEGIN{> var["a"] = 1> var["g"] = 2> var["m"] = 3> var["u"] = 4> for (test in var)> {> print "Index:",test," - Value:",var[test]> }> }'Index: u - Value: 4Index: m - Value: 3Index: a - Value: 1Index: g - Value: 2 刪除數(shù)組變量格式:delete array[index]刪除命令會從數(shù)組中刪除關聯(lián)索引值和相關的數(shù)據(jù)元素值$ gawk 'BEGIN{> var["a"] = 1> var["g"] = 2> for (test in var)> {> print "Index:",test," - Value:",var[test]> }> delete var["g"]> print "---"> for (test in var)> print "Index:",test," - Value:",var[test]> }'Index: a - Value: 1Index: g - Value: 2---Index: a - Value: 1 #使用模式正則表達式正則表達式必須出現(xiàn)在它要控制的程序腳本的左花括號前$ gawk 'BEGIN{FS=","} /11/{print $1}' data1data11匹配操作符匹配操作符是波浪線( ~ ),允許將正則表達式限定在記錄中的特定數(shù)據(jù)字段$ gawk –F: '$1 !~ /rich/{print $1,$NF}' /etc/passwd -- gawk程序腳本會打印/etc/passwd文件中與用戶ID rich 不匹配的用戶ID和登錄shellroot /bin/bashdaemon /bin/shbin /bin/shsys /bin/sh$ gawk -F: '$1 ~ /rich/{print $1,$NF}' /etc/passwdrich /bin/bash$ gawk 'BEGIN{FS=","} $2 ~ /^data2/{print $0}' data1data21,data22,data23,data24,data25數(shù)學表達式可以使用任何常見的數(shù)學比較表達式。x == y :值x等于y。x <= y :值x小于等于y。x < y :值x小于y。x >= y :值x大于等于y。x > y :值x大于y。$ gawk -F: '$4 == 0{print $1}' /etc/passwd -- 顯示所有屬于root用戶組(組ID為 0 )的系統(tǒng)用戶rootsyncshutdownhaltoperator也可以對文本數(shù)據(jù)使用表達式,跟正則表達式不同,表達式必須完全匹配$ gawk -F, '$1 == "data"{print $1}' data1$$ gawk -F, '$1 == "data11"{print $1}' data1data11 #結構命令if語句gawk編程語言支持標準的 if-then-else 格式的 if 語句。你必須為 if 語句定義一個求值的條件,并將其用圓括號括起來格式:if (condition) statement1$ cat data4105135034$ gawk '{if ($1 > 20) print $1}' data45034$ gawk '{> if ($1 > 20)> { -- 執(zhí)行多條語句,就必須用花括號將它們括起來> x = $1 * 2> print x> }> }' data410068gawk 的 if 語句也支持 else 子句,允許在 if 語句條件不成立的情況下執(zhí)行一條或多條語句$ gawk '{> if ($1 > 20)> {> x = $1 * 2> print x> } else> {> x = $1 / 2> print x> }}' data452.56.510068while語句while 循環(huán)允許遍歷一組數(shù)據(jù),并檢查迭代的結束條件格式:while (condition){statements}$ cat data5130 120 135160 113 140145 170 215$ gawk '{> total = 0> i = 1> while (i < 4)> {> total += $i> i++> }> avg = total / 3> print "Average:",avg> }' data5Average: 128.333Average: 137.667Average: 176.667gawk編程語言支持在 while 循環(huán)中使用 break 語句和 continue 語句,允許你從循環(huán)中跳出$ gawk '{> total = 0> i = 1> while (i < 4)> {> total += $i> if (i == 2)> break> i++> }> avg = total / 2> print "The average of the first two data elements is:",avg> }' data5The average of the first two data elements is: 125The average of the first two data elements is: 136.5The average of the first two data elements is: 157.5do—while語句do-while 語句類似于 while 語句,但會在檢查條件語句之前執(zhí)行命令格式:do{statements} while (condition)$ gawk '{> total = 0> i = 1> do> {> total += $i> i++> } while (total < 150)> print total }' data5250160315for語句gawk編程語言支持C風格的 for 循環(huán)格式:for( variable assignment; condition; iteration process)$ gawk '{> total = 0> for (i = 1; i < 4; i++)> {> total += $i> }> avg = total / 3> print "Average:",avg> }' data5Average: 128.333Average: 137.667Average: 176.667 #格式化打印格式:printf "format string", var1, var2 . . . format string 是格式化輸出的關鍵它會用文本元素和格式化指定符來具體指定如何呈現(xiàn)格式化輸出。格式化指定符是一種特殊的代碼,會指明顯示什么類型的變量以及如何顯示。gawk程序會將每個格式化指定符作為占位符,供命令中的變量使用。第一個格式化指定符對應列出的第一個變量,第二個對應第二個變量,依此類推格式化指定符格式:%[modifier]control-letter -- 其中 control-letter 是一個單字符代碼,用于指明顯示什么類型的數(shù)據(jù)格式化指定符的控制字母控制字母 描 述c 將一個數(shù)作為ASCII字符顯示d 顯示一個整數(shù)值i 顯示一個整數(shù)值(跟d一樣)e 用科學計數(shù)法顯示一個數(shù)f 顯示一個浮點值g 用科學計數(shù)法或浮點數(shù)顯示(選擇較短的格式)o 顯示一個八進制值s 顯示一個文本字符串x 顯示一個十六進制值X 顯示一個十六進制值,但用大寫字母A~F 科學計數(shù)法顯示一個數(shù)$ gawk 'BEGIN{> x = 10 * 100> printf "The answer is: %e\n", x> }'The answer is: 1.000000e+03除了控制字母外,還有3種修飾符可以用來進一步控制輸出:width :指定了輸出字段最小寬度的數(shù)字值。如果輸出短于這個值, printf 會將文本右對齊,并用空格進行填充。如果輸出比指定的寬度還要長,則按照實際的長度輸出。prec :這是一個數(shù)字值,指定了浮點數(shù)中小數(shù)點后面位數(shù),或者文本字符串中顯示的最大字符數(shù)。- (減號):指明在向格式化空間中放入數(shù)據(jù)時采用左對齊而不是右對齊。在使用 printf 語句時,你可以完全控制輸出樣式通過添加一個值為 16 的修飾符,我們強制第一個字符串的輸出寬度為16個字符。默認情況下,printf 命令使用右對齊來將數(shù)據(jù)放到格式化空間中。要改成左對齊,只需給修飾符加一個減號即可 $ gawk 'BEGIN{FS="\n"; RS=""} {printf "%-16s %s\n", $1, $4}' data2Riley Mullen (312)555-1234Frank Williams (317)555-9876Haley Snell (313)555-4938 #內(nèi)建函數(shù)數(shù)學函數(shù)gawk數(shù)學函數(shù)函 數(shù) 描 述atan2(x, y) x/y的反正切,x和y以弧度為單位cos(x) x的余弦,x以弧度為單位exp(x) x的指數(shù)函數(shù)int(x) x的整數(shù)部分,取靠近零一側的值log(x) x的自然對數(shù)rand( ) 比0大比1小的隨機浮點值sin(x) x的正弦,x以弧度為單位sqrt(x) x的平方根srand(x) 為計算隨機數(shù)指定一個種子值gawk還支持一些按位操作數(shù)據(jù)的函數(shù)。and(v1, v2) :執(zhí)行值 v1 和 v2 的按位與運算。compl(val) :執(zhí)行 val 的補運算。lshift(val, count) :將值 val 左移 count 位。or(v1, v2) :執(zhí)行值 v1 和 v2 的按位或運算。rshift(val, count) :將值 val 右移 count 位。xor(v1, v2) :執(zhí)行值 v1 和 v2 的按位異或運算。字符串函數(shù)gawk字符串函數(shù)函 數(shù) 描 述asort(s [,d]) 將數(shù)組s按數(shù)據(jù)元素值排序。索引值會被替換成表示新的排序順序的連續(xù)數(shù)字。另外,如果指定了d,則排序后的數(shù)組會存儲在數(shù)組d中asorti(s [,d]) 將數(shù)組s按索引值排序。生成的數(shù)組會將索引值作為數(shù)據(jù)元素值,用連續(xù)數(shù)字索引來表明排序順序。另外如果指定了d,排序后的數(shù)組會存儲在數(shù)組d中gensub(r, s, h [, t]) 查找變量$0或目標字符串t(如果提供了的話)來匹配正則表達式r。如果h是一個以g或G開頭的字符串,就用s替換掉匹配的文本。如果h是一個數(shù)字,它表示要替換掉第h處r匹配的地方gsub(r, s [,t]) 查找變量$0或目標字符串t(如果提供了的話)來匹配正則表達式r。如果找到了,就全部替換成字符串sindex(s, t) 返回字符串t在字符串s中的索引值,如果沒找到的話返回 0length([s]) 返回字符串s的長度;如果沒有指定的話,返回$0的長度match(s, r [,a]) 返回字符串s中正則表達式r出現(xiàn)位置的索引。如果指定了數(shù)組a,它會存儲s中匹配正則表達式的那部分split(s, a [,r]) 將s用 FS 字符或正則表達式r(如果指定了的話)分開放到數(shù)組a中。返回字段的總數(shù)sprintf(format,variables) 用提供的format和variables返回一個類似于printf輸出的字符串sub(r, s [,t]) 在變量$0或目標字符串t中查找正則表達式r的匹配。如果找到了,就用字符串s替換掉第一處匹配substr(s, i [,n]) 返回s中從索引值i開始的n個字符組成的子字符串。如果未提供n,則返回s剩下的部分tolower(s) 將s中的所有字符轉換成小寫toupper(s) 將s中的所有字符轉換成大寫轉換大寫,返回長度$ gawk 'BEGIN{x = "testing"; print toupper(x); print length(x) }'TESTING7 排序$ gawk 'BEGIN{> var["a"] = 1> var["g"] = 2> var["m"] = 3> var["u"] = 4> asort(var, test)> for (i in test)> print "Index:",i," - value:",test[i]> }'Index: 4 - value: 4Index: 1 - value: 1Index: 2 - value: 2Index: 3 - value: 3 時間函數(shù)gawk的時間函數(shù)函 數(shù) 描 述mktime(datespec) 將一個按YYYY MM DD HH MM SS [DST]格式指定的日期轉換成時間戳值 ①strftime(format[,timestamp]) 將當前時間的時間戳或timestamp(如果提供了的話)轉化格式化日期(采用shell函數(shù)date()的格式) systime( ) 返回當前時間的時間戳例如:$ gawk 'BEGIN{> date = systime()> day = strftime("%A, %B %d, %Y", date)> print day> }'Friday, December 26, 2014 #自定義函數(shù)定義函數(shù)格式:function name([variables]){statements}使用自定義函數(shù)在定義函數(shù)時,它必須出現(xiàn)在所有代碼塊之前(包括 BEGIN 代碼塊),有助于將函數(shù)代碼與gawk程序的其他部分分開$ gawk '> function myprint()> {> printf "%-16s - %s\n", $1, $4> }> BEGIN{FS="\n"; RS=""}> {> myprint()> }' data2Riley Mullen - (312)555-1234Frank Williams - (317)555-9876Haley Snell - (313)555-4938創(chuàng)建函數(shù)庫$ cat funclibfunction myprint(){printf "%-16s - %s\n", $1, $4}function myrand(limit){return int(limit * rand())}function printthird(){print $3}$ cat script4BEGIN{ FS="\n"; RS=""}{myprint()}$ gawk -f funclib -f script4 data2Riley Mullen - (312)555-1234Frank Williams - (317)555-9876Haley Snell - (313)555-4938 #實例計算保齡球錦標賽成績$ cat scores.txtRich Blum,team1,100,115,95Barbara Blum,team1,110,115,100Christine Bresnahan,team2,120,115,118Tim Bresnahan,team2,125,112,116$ cat bowling.shfor team in $(gawk –F, '{print $2}' scores.txt | uniq)dogawk –v team=$team 'BEGIN{FS=","; total=0}{if ($2==team){total += $3 + $4 + $5;}}END {avg = total / 6;print "Total for", team, "is", total, ",the average is",avg}' scores.txtdone$ sh bowling.shTotal for team1 is 635, the average is 105.833Total for team2 is 706, the average is 117.667

?

轉載于:https://www.cnblogs.com/TianMu/p/11199371.html

總結

以上是生活随笔為你收集整理的流编辑器sed和gawk的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久草久草在线观看 | 色久av| 亚洲第一色 | 综合网久久 | 亚洲视频www | 黄色小说免费在线观看 | 久久天天躁 | 99riav1国产精品视频 | 免费在线中文字幕 | 国产精品国产亚洲精品看不卡 | 国产亚洲综合性久久久影院 | 狠狠搞,com | avv天堂| 免费a视频在线 | 日韩免费电影在线观看 | 日韩精品中文字幕有码 | 久久手机免费视频 | 99精品国产一区二区 | 爱av在线网 | 91.精品高清在线观看 | 免费观看国产视频 | 一区二区三区免费在线 | 中文字幕资源网在线观看 | 99久久精品国产一区二区三区 | 国精产品999国精产品岳 | 亚洲乱亚洲乱亚洲 | 在线国产一区 | 免费观看视频黄 | 999精品视频| 久久优| 亚洲一区二区三区四区在线视频 | 免费国产一区二区视频 | 在线网站黄 | 日本午夜免费福利视频 | 婷婷综合电影 | 国产精品久久久久久999 | 91在线影院| 成人av动漫在线观看 | 国产四虎在线 | 国产日韩欧美在线看 | 少妇自拍av | 天天艹 | 91污污视频在线观看 | 久久美女视频 | 91精品蜜桃 | 美女视频永久黄网站免费观看国产 | 久草视频在线播放 | 色欲综合视频天天天 | 成人在线观看免费视频 | 欧美日韩精品在线免费观看 | 婷婷六月色 | 日本资源中文字幕在线 | 国产九九九视频 | 日本三级久久久 | 国产中年夫妇高潮精品视频 | 日本不卡一区二区 | 亚洲精品小视频 | 岛国一区在线 | 国产精品男女 | 麻豆视频免费在线播放 | 国产视频不卡 | 在线观看亚洲免费视频 | 免费看黄在线网站 | 国产日韩在线播放 | 国产视频首页 | 就要色综合 | 婷婷五月情 | 2019av在线视频 | 97精品国产91久久久久久久 | 国产美女视频一区 | 狠狠躁天天躁综合网 | 成人免费网视频 | 天天久久夜夜 | 在线视频日韩欧美 | av色影院| 精品国产精品国产偷麻豆 | 婷婷电影在线观看 | 色欧美综合 | 日韩乱码中文字幕 | 久久精品一区二区三区视频 | 激情久久久久久久久久久久久久久久 | 视频三区在线 | 97综合网 | 色综合天天色 | 久热色超碰| 五月天国产精品 | 日韩久久精品 | 国产日韩精品一区二区在线观看播放 | 成人在线免费看视频 | 中国一级片免费看 | 激情视频91| 日本爱爱免费视频 | 国产原创在线 | 久久精品99国产精品日本 | 九九九热精品免费视频观看网站 | 精品国偷自产在线 | 国产又粗又长的视频 | 视频国产一区二区三区 | a√资源在线 | 91自拍视频在线观看 | 亚洲精品小视频 | 天天色成人网 | 亚洲 欧洲 国产 精品 | 免费看片日韩 | 免费观看日韩 | 香蕉网站在线观看 | 日本久久久久久科技有限公司 | 国产高清久久 | 久久久久久久久久久国产精品 | 韩国av在线 | 国产色拍拍拍拍在线精品 | 天天躁日日躁狠狠躁 | 在线电影 一区 | 色婷婷狠狠干 | www.久草.com | 免费日韩 精品中文字幕视频在线 | 亚洲aⅴ一区二区三区 | 成年人免费看av | 蜜桃av人人夜夜澡人人爽 | 去干成人网 | 国产性xxxx | 在线韩国电影免费观影完整版 | 欧美一区二区在线刺激视频 | 西西大胆免费视频 | 四虎成人精品在永久免费 | 国产精品久久久久久久久久久久久久 | 中文字幕成人网 | 欧美日本不卡视频 | 亚洲精品乱码白浆高清久久久久久 | 国产高清视频 | 国产精品一区二区无线 | 日韩精品极品视频 | 国产又粗又猛又色 | 欧美aⅴ在线观看 | 国产精品网在线观看 | 亚洲精品久久久久久中文传媒 | 日本深夜福利视频 | 国产精品99久久久精品免费观看 | 网站免费黄| 亚洲国产精品成人va在线观看 | 免费欧美高清视频 | 在线视频亚洲 | 亚洲精品久久久久www | 狠狠色丁香九九婷婷综合五月 | 日韩网站一区二区 | 日韩电影在线看 | .国产精品成人自产拍在线观看6 | 久久亚洲美女 | 国产91亚洲精品 | 久久久久国产精品免费网站 | 国产视频在线播放 | 九九精品视频在线观看 | 高清一区二区三区av | 国产精品久久9 | 视频在线观看入口黄最新永久免费国产 | 久久天天拍| 日韩精品中文字幕有码 | 国精产品999国精产品视频 | 亚洲首页 | 日韩欧美高清 | 黄色av一区| 国产一级免费在线观看 | 91精品91| 色播五月婷婷 | 久久综合国产伦精品免费 | 成人免费观看在线视频 | 欧美日韩免费在线观看视频 | 日韩电影在线看 | 超碰成人免费电影 | 人人爽影院 | 99精品国产在热久久 | 国产黄在线 | 欧美久草视频 | 日日夜夜网站 | 国产一区二区三区免费在线观看 | 国产资源中文字幕 | 欧美日韩精品免费观看 | 精品国产乱子伦一区二区 | 免费日韩 精品中文字幕视频在线 | 国产精品福利一区 | 日本精品视频在线观看 | 天堂网av 在线| 精品国产伦一区二区三区 | 亚洲精品乱码久久久久 | 毛片www| 天天射一射 | 欧美日韩二区三区 | 国产99视频在线观看 | 国产精品久久久久久久久久妇女 | 国产亚洲无 | 91av视频在线播放 | 99精品国产兔费观看久久99 | 国产精品免费久久久久久 | 日本视频精品 | 免费看黄20分钟 | 成人免费观看视频网站 | 狠狠操.com | av成人免费 | 精品一区二区免费 | 9797在线看片亚洲精品 | 国产精品毛片一区二区在线 | 国产色影院 | 国产一二区在线观看 | 手机在线小视频 | 日韩av在线高清 | 婷婷成人综合 | 国产在线 一区二区三区 | 最新国产精品视频 | 久久精品网站免费观看 | 日韩精品在线免费观看 | 深爱激情开心 | 欧美大片在线观看一区 | 91在线小视频 | 午夜av免费在线观看 | 婷婷午夜 | 日韩一级片网址 | 午夜久久福利视频 | 91亚洲精品久久久蜜桃 | 人人精久| 久草久 | 91av资源网| 97国产精品一区二区 | 狠狠干狠狠艹 | 97视频在线观看免费 | 久久久九色精品国产一区二区三区 | 日韩在线一区二区免费 | 99精品国产在热久久下载 | 手机av片| 精品9999| 亚洲一级电影 | 成人网在线免费视频 | 99久久影院| 天天干,天天射,天天操,天天摸 | 久久国产美女视频 | 国产一级免费在线 | 久草在线看片 | 国产成人精品亚洲日本在线观看 | 91在线国内视频 | 成人av在线看 | 国产精选在线 | 久久综合给合久久狠狠色 | 欧美一级电影片 | 色综合久久88色综合天天人守婷 | 久久国产热视频 | 中文字幕欧美日韩va免费视频 | 日韩免费| 国产精品网站 | 亚洲日韩精品欧美一区二区 | 最新不卡av| 色婷婷综合久久久久中文字幕1 | 最近中文字幕在线播放 | 亚洲成人av在线电影 | 久久久精品免费看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 很黄很污的视频网站 | 亚洲国产精彩中文乱码av | 欧美极品xxx | 精品视频亚洲 | 久久精品国产成人 | 婷婷久久网 | 四虎亚洲精品 | 久久久91精品国产一区二区精品 | 午夜123| 色99中文字幕 | 久久综合婷婷综合 | 久久免费视频7 | 日韩成人在线免费观看 | 少妇性色午夜淫片aaaze | 人人玩人人添人人澡超碰 | 天天天干天天射天天天操 | 在线小视频你懂的 | 狠狠狠色丁香综合久久天下网 | 欧美久久久久久久久久 | 亚洲视频aaa | 国产美女被啪进深处喷白浆视频 | 国产精品白浆视频 | 四虎影视成人精品国库在线观看 | 午夜 免费 | av福利免费 | 日韩精品在线看 | 国产在线观看免费观看 | 中文字幕精品一区二区三区电影 | 久久涩涩网站 | 国产精品久久久久久久电影 | 日韩免费在线视频观看 | 青草视频在线播放 | 久久精品国产精品 | 天堂网在线视频 | 日韩免费大片 | 国产精品久久久99 | 波多野结衣亚洲一区二区 | 九九久久在线看 | 91人人澡人人爽人人精品 | 久久久久免费精品国产小说色大师 | 国产视频欧美视频 | 91在线精品秘密一区二区 | 在线观看一区 | 亚洲在线视频免费 | 久草久视频 | 欧美极品一区二区三区 | 在线免费观看的av | 久久久国产电影 | 亚洲成人xxx | 96精品视频 | 国产成人免费观看久久久 | www.xxxx变态.com | 免费福利片2019潦草影视午夜 | 成人免费视频免费观看 | 久久9999久久免费精品国产 | 欧美精品乱码久久久久久按摩 | 成人免费xxxxxx视频 | 国产精品一区二区中文字幕 | www.激情五月.com | 免费成人结看片 | 午夜视频免费在线观看 | 伊人狠狠干 | av电影免费在线看 | 日韩久久精品一区二区 | 久久久久久久久久久久久久电影 | 视频在线观看入口黄最新永久免费国产 | 国产96av| 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品国产精品乱码在线观看 | 久久天堂影院 | 黄色免费网站 | 97爱爱爱 | 玖玖精品在线 | 91成人网在线播放 | 欧洲在线免费视频 | 中文字幕影片免费在线观看 | www.亚洲| 久久99亚洲精品久久久久 | 欧美性大胆| 久久久国产日韩 | a在线免费观看视频 | 久久se视频 | 视频一区在线免费观看 | 91香蕉视频在线 | 日日插日日干 | 激情久久小说 | 国产中文字幕国产 | av日韩av | 午夜视频日本 | 国产精品欧美久久久久天天影视 | 欧美精品久久天天躁 | 亚洲午夜小视频 | 五月婷网站 | 久久国产香蕉视频 | 天天操天天操 | 久久免费播放 | 91女子私密保健养生少妇 | 国产 成人 久久 | 国产成人福利在线 | 五月激情久久久 | 亚洲精选视频在线 | 夜夜爽天天爽 | a特级毛片 | 91成人破解版 | 免费在线观看日韩欧美 | 久久人人爽人人片av | 欧美日韩在线视频观看 | 亚洲精品在线观看av | 丁香花五月 | 欧美最新大片在线看 | 国产亚洲91 | 日韩av成人免费看 | 国产免费影院 | 婷婷av电影| 日韩电影黄色 | 天天操天天摸天天爽 | 精品久久久久一区二区国产 | 在线免费观看一区二区三区 | 国产涩涩在线观看 | 人人网av| 成年人视频在线 | 麻豆传媒视频在线播放 | 激情五月婷婷综合网 | 久久免费在线 | 亚洲六月丁香色婷婷综合久久 | 一区精品在线 | 国产精品美 | 97在线观看免费观看高清 | 亚洲成人av在线电影 | 国产又粗又猛又色又黄视频 | 免费在线黄 | 免费久久99精品国产婷婷六月 | 国产精品久久久久久久久久久久 | 国产精品大片 | 综合色狠狠 | 午夜精品久久久久久久久久 | av黄网站| 久草在线视频在线 | 精品视频在线看 | 永久免费精品视频网站 | 国产精品免费久久久久久久久久中文 | 一级欧美一级日韩 | 91九色视频国产 | 日日麻批40分钟视频免费观看 | 天天干天天爽 | 国产精品成久久久久 | 免费av在线 | 久久这里只有精品23 | 久久久久久久久毛片精品 | 91精品一区二区三区久久久久久 | 久久精品精品电影网 | av久久在线| 黄色毛片在线看 | 欧美成人中文字幕 | 久久久久久视频 | 五月婷婷激情六月 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 欧美日韩国产一区二区在线观看 | 91精品免费在线观看 | 免费看黄的视频 | 国产高清视频在线播放一区 | 91探花国产综合在线精品 | 最近中文字幕mv免费高清在线 | 天天搞夜夜骑 | 欧美日韩国产精品一区二区三区 | 国产精品久久久亚洲 | 久保带人 | 五月激情丁香婷婷 | 亚洲最大成人网4388xx | www免费在线观看 | 国内精品久久久久影院日本资源 | 91精彩视频在线观看 | 日韩免费视频一区二区 | 国产精品不卡av | 日日爱网站 | 成人免费在线观看电影 | 最近中文字幕完整视频高清1 | www.国产视频 | 91天天操 | 中文在线a天堂 | 激情久久婷婷 | 91亚洲精品久久久蜜桃 | 国产高清在线视频 | 亚洲欧美成人在线 | 亚洲黄色在线看 | 国产精品99久久久久久武松影视 | 精品国内 | 国产艹b视频 | 69国产在线观看 | 国产精品乱码久久久久 | 99视频在线观看免费 | 久久精品久久国产 | 中文字幕乱码在线播放 | 精品综合久久久 | 韩日av在线| 国产福利精品视频 | aaa日本高清在线播放免费观看 | 国产一级免费观看视频 | 在线视频1卡二卡三卡 | 97免费中文视频在线观看 | 亚洲电影第一页av | 成年美女黄网站色大片免费看 | 2023年中文无字幕文字 | 久久综合干 | 精品久久国产精品 | 国内精品久久久久久久久久久 | 五月激情天 | 亚洲毛片视频 | 久久综合狠狠综合 | 国产青春久久久国产毛片 | 高清av免费观看 | 九月婷婷人人澡人人添人人爽 | 66av99精品福利视频在线 | 成人国产一区二区 | 亚洲视频 视频在线 | av网站地址 | 欧美性黑人 | 久久综合五月天婷婷伊人 | 国产最新精品视频 | 成片视频在线观看 | 久久激情五月丁香伊人 | 成人动漫精品一区二区 | 免费99| 成人免费观看电影 | 在线免费观看欧美日韩 | 久久手机免费视频 | 亚洲精品国产精品久久99热 | 欧美黑吊大战白妞欧美 | 久久a热6| 欧美日bb | 黄色成人免费电影 | 欧美日在线观看 | 国产精品一区二区果冻传媒 | 久黄色| 久久国产精品视频观看 | 日韩乱色精品一区二区 | avove黑丝 | 免费视频 三区 | 中文字幕大全 | 99国内精品 | 久热电影 | 一区二区三区免费在线 | 美女网站久久 | 色.com| 亚洲va欧洲va国产va不卡 | 中文字幕成人网 | 天天插天天爱 | 成人免费色 | 涩涩网站免费 | 在线看国产精品 | 久久久不卡影院 | 精品一区 在线 | 日韩精品一区二区三区水蜜桃 | 国产亚洲婷婷 | 91视频观看免费 | 久久香蕉影视 | 久久麻豆视频 | 国产综合在线观看视频 | 高清av免费看 | 免费中文字幕 | 国产乱对白刺激视频不卡 | 在线观看国产www | 国产日韩欧美在线免费观看 | 国产不卡精品视频 | 亚洲国产精品500在线观看 | 国产精品永久久久久久久久久 | 日韩一级电影网站 | 最近最新中文字幕 | 96亚洲精品久久久蜜桃 | 国产精品精品久久久久久 | 在线看一区 | 久久综合狠狠 | 一区中文字幕 | 亚洲精品合集 | 欧美精品在线观看免费 | 91系列在线观看 | 欧美日韩视频免费看 | 久久久精品亚洲 | 91麻豆精品国产91久久久无需广告 | 99热这里是精品 | 在线观看国产永久免费视频 | 看av免费 | 成 人 免费 黄 色 视频 | 亚洲精品国产成人av在线 | 国产精品毛片网 | а天堂中文最新一区二区三区 | 日精品| 在线国产专区 | 成全免费观看视频 | 人人操日日干 | 伊人婷婷久久 | 麻豆视传媒官网免费观看 | 超碰在线官网 | 九九av| 欧美在线观看视频免费 | 欧美日韩精品在线视频 | av网站手机在线观看 | 欧美在线日韩在线 | 天堂中文在线视频 | 午夜av免费| 一级性av| 精品一区二区视频 | 在线看片一区 | 天天干天天操天天做 | 成年人免费看片网站 | www.国产在线观看 | 久久久久国产一区二区三区 | 成年人视频免费在线 | 久久免费视频这里只有精品 | 精品国模一区二区 | 免费大片av | 国产亚洲成人网 | 亚洲精品在线视频观看 | 最新av电影网站 | 国产成人精品亚洲 | 色94色欧美| 国产美腿白丝袜足在线av | 中文av字幕在线观看 | 日本成址在线观看 | 久久久久久久久久久久电影 | 亚洲免费公开视频 | 亚洲欧美国产精品va在线观看 | 日韩com | 美女视频黄在线观看 | 久久久久久久久久久久久久av | 天天干天天射天天操 | 高潮久久久久久 | 日韩中文在线视频 | 久久a v视频| 欧美日韩一区二区三区在线观看视频 | 婷婷五月色综合 | 91av视频在线免费观看 | 欧美日韩高清免费 | 国产精品一区二区三区免费视频 | 天天干夜夜夜操天 | 久久久久草 | 国产a网站 | a精品视频 | 在线日韩精品视频 | 2019中文最近的2019中文在线 | 亚洲自拍av在线 | 欧美性做爰猛烈叫床潮 | 亚洲资源视频 | 久久99视频免费观看 | 中文字幕在线观看日本 | 国产精品18久久久久久vr | 日本最新中文字幕 | 日韩av在线看 | 久久婷婷五月综合色丁香 | 国产精品正在播放 | 国产人成在线视频 | 精品久久1 | 中文字幕资源在线 | 亚洲精品一区二区精华 | 久久天天躁狠狠躁亚洲综合公司 | 日韩av片免费在线观看 | 在线一区电影 | 91精品爽啪蜜夜国产在线播放 | 国产区在线视频 | 亚洲成人中文在线 | 日韩在线精品 | 韩国精品在线观看 | 一区三区视频在线观看 | 国产成人av免费在线观看 | 亚洲一区 影院 | 色伊人网 | 婷婷色在线播放 | 精品国产伦一区二区三区观看说明 | 欧美精品一区二区在线观看 | 18pao国产成视频永久免费 | 久久免费视频这里只有精品 | 亚洲理论片在线观看 | 成人动态视频 | 欧美激情另类文学 | 午夜少妇一区二区三区 | 亚洲精品www久久久 www国产精品com | 狠狠网亚洲精品 | 亚洲 中文字幕av | 久久国产免费视频 | 在线观看免费国产小视频 | 色婷婷综合久色 | 亚洲精品视频免费在线观看 | 美女一区网站 | 亚洲精品在线网站 | av 一区二区三区 | 蜜臀av性久久久久av蜜臀三区 | 天天爽综合网 | 日本久久高清视频 | 福利视频一区二区 | 一区在线免费观看 | 99久久久久久久久 | 久久这里 | 成人亚洲免费 | 免费看的黄色片 | 欧美黑人xxxx猛性大交 | 欧美 亚洲 另类 激情 另类 | 精品99免费视频 | 一区二区三区三区在线 | 91九色视频网站 | 久久精品在线免费观看 | 欧洲精品码一区二区三区免费看 | 91在线影院 | 国产欧美日韩视频 | 欧美另类z0zx | 精油按摩av| 九九热.com | 国产69精品久久99不卡的观看体验 | 二区三区中文字幕 | 日韩av高潮 | 成人羞羞免费 | 国产精品原创 | 国产成人av片 | 精品你懂的 | 在线视频一二三 | 日本精油按摩3 | 在线免费中文字幕 | 99视频在线精品免费观看2 | 日日操网| 欧美日本在线观看视频 | 亚洲丝袜一区二区 | 99riav1国产精品视频 | 91av超碰| 超碰免费观看 | 国产伦精品一区二区三区… | 天天玩天天干天天操 | 日本大尺码专区mv | 92av视频| 精品国产一区二区三区在线观看 | 久久国产色 | 激情五月在线视频 | 精品理论片 | 免费又黄又爽的视频 | 国产a视频免费观看 | 久久高视频 | 一级黄视频 | 九九九在线观看 | 天天干人人干 | 午夜体验区 | 西西www4444大胆视频 | 国色天香在线 | 中文字幕资源在线观看 | 久久免费播放 | 免费视频一二三区 | 一区二区三区四区在线 | 一区二区三区久久精品 | 日韩三级中文字幕 | 九九久久精品视频 | 日本一区二区三区免费观看 | 香蕉国产91 | 91精品国产综合久久福利 | www国产亚洲精品久久麻豆 | 国产视频在线观看免费 | 日韩久久在线 | 在线观看日韩免费视频 | 久久爱资源网 | 四虎永久免费网站 | 亚洲精品在线观看av | 中文字幕中文字幕中文字幕 | 国产高清av免费在线观看 | 国产午夜精品视频 | 三级在线视频观看 | 国际精品久久久久 | 亚洲精品中文字幕在线观看 | 国产资源在线免费观看 | 欧美va在线观看 | 国产精品18久久久久久首页狼 | 婷婷性综合 | 亚洲欧洲精品视频 | 国产青草视频在线观看 | 日韩欧美在线一区 | 天天干天天拍天天操 | 五月婷婷久久丁香 | 中文在线中文a | 午夜av免费在线观看 | 国产在线观看91 | 国产在线一线 | 在线观看视频在线观看 | 久久亚洲福利视频 | 免费av网站在线看 | 免费黄色在线网址 | 国产精品国产精品 | 蜜桃视频日本 | 91福利视频久久久久 | 国产色综合天天综合网 | 日日夜夜婷婷 | 国产成人精品999在线观看 | 中文视频一区二区 | 三级黄色网络 | 中文字幕一区二区三区视频 | 亚洲欧洲中文日韩久久av乱码 | 久久久久久麻豆 | 欧美性直播 | 日韩精品视频第一页 | 玖草影院 | 香蕉91视频 | 不卡av电影在线 | 日日干综合 | 中文字幕国产亚洲 | 日本护士三级少妇三级999 | 一区二区三区在线免费观看视频 | 国产视频一区精品 | 日批视频在线播放 | 中文字幕在线免费97 | 亚洲免费av电影 | 色偷偷88欧美精品久久久 | 久久免费视频8 | 国产福利在线 | 91漂亮少妇露脸在线播放 | 色吧久久| 操操操天天操 | 五月婷婷色综合 | 国产精品wwwwww | 成人午夜电影网站 | 五月婷婷在线观看视频 | a天堂中文在线 | 91免费高清观看 | 天天操夜夜操天天射 | 国产最新在线 | 国产高清视频免费在线观看 | 国产特黄色片 | 久久精品一区八戒影视 | 超级av在线 | 国产成人a v电影 | 欧美韩国在线 | 精品二区久久 | 免费亚洲视频 | 久久久国产精品视频 | 夜夜操天天干, | 亚洲国产精彩中文乱码av | 成人香蕉视频 | 黄色免费在线视频 | 欧美成人精品欧美一级乱黄 | 日韩手机在线观看 | 久久精品视频在线观看 | 久久精品www人人爽人人 | 狠狠干狠狠操 | 一级特黄aaa大片在线观看 | 国产在线观看中文字幕 | 亚洲v精品| www.夜夜骑.com | 亚洲精品综合在线观看 | 天天操天天怕 | 亚洲综合欧美日韩狠狠色 | 天天天天色射综合 | 五月的婷婷 | 久久久久久欧美二区电影网 | 天天爽天天爽天天爽 | 日日夜夜精品视频天天综合网 | 欧美做受高潮 | 天天骚夜夜操 | 伊人在线视频 | 91在线九色| 国产精品麻豆91 | 国产免费又爽又刺激在线观看 | 在线观看日韩国产 | 夜夜操天天 | 日本精品久久 | 色综合久久中文字幕综合网 | 国产h在线观看 | 久久看片网站 | 麻豆系列在线观看 | 亚洲精品一区二区在线观看 | 91香蕉视频 | 狠狠ri| 久久亚洲国产精品 | 精品国产伦一区二区三区 | 成人免费视频在线观看 | a黄色影院| 四虎在线观看 | 国内精品久久久久影院男同志 | 国产偷国产偷亚洲清高 | a v在线观看 | 最新av在线播放 | 黄色视屏免费在线观看 | 国产欧美精品在线观看 | 91av视频在线观看免费 | 亚洲日日日 | 国产精品ⅴa有声小说 | 久久免费视频99 | 波多野结衣在线播放一区 | 国产在线不卡精品 | 久久视精品 | 成人黄色电影视频 | 亚洲免费一级电影 | 久久成人午夜视频 | 久久久久久不卡 | 亚洲精品在线视频观看 | 99久久99久久精品国产片果冰 | 青青草国产精品 | 天天干天天干天天操 | 啪啪免费试看 | 国产精品久久久久久久久久久不卡 | 国产精品99久久久久久有的能看 | 欧美亚洲国产一卡 | 五月天综合婷婷 | 成人在线免费视频观看 | 福利视频一区二区 | 国产视频一区在线 | 草免费视频| 色综合天 | 亚洲精品国产成人 | 久久精品久久精品久久 | 久久成人精品电影 | 午夜精品影院 | 亚洲永久av | 国产在线观看国语版免费 | 怡红院av久久久久久久 | 正在播放国产91 | 黄色一级性片 | 久久理论电影 | 天天曰天天曰 | 欧美激情片在线观看 | 女人魂免费观看 | 国产一卡二卡在线 | 一区在线免费观看 | 国产一区二区三区免费观看视频 | 五月天久久狠狠 | 青草草在线视频 | 日韩欧美在线一区二区 | 2019国产精品 | 中文字幕在线观看一区二区 | 好看的国产精品视频 | 中文字幕在线观看免费高清电影 | 手机看片1042 | 国产 视频 久久 | 玖玖玖国产精品 | 香蕉看片| h动漫中文字幕 | 久久久午夜影院 | 亚洲精品黄| 免费观看成年人视频 | 国内精品久久久久影院优 | 973理论片235影院9 | 国产亚洲精品v | 免费观看www小视频的软件 | 一区二区伦理 | 亚洲精品国产精品国自产在线 | 99国产精品免费网站 | 黄色小网站在线观看 | 中文字幕av最新 | 亚洲欧美视频一区二区三区 | 欧美精品xxx| 久久精品www人人爽人人 | av中文字幕在线播放 | 国产黄 | 人人艹人人 | 日韩精品免费一线在线观看 | 国产成人精品不卡 | 日日夜夜婷婷 | 2023国产精品自产拍在线观看 | 日本激情视频中文字幕 | 国产福利a| a天堂中文在线 | 欧美成人精品欧美一级乱黄 | 国产精品 中文在线 | 欧美精品一区在线 | 99精品免费在线 | 日韩丝袜 | 国产色女人 | 久草在线视频首页 | 国产中的精品av小宝探花 | 黄色av一区二区 | 91香蕉视频在线下载 | 麻豆va一区二区三区久久浪 | 在线观看黄色小视频 | 美女网站在线 | 日日夜夜干 | 国产一级二级视频 | 欧美一区二区在线刺激视频 | 国产成人av网 | 亚洲黄色三级 | 天天色天天搞 | 国产成人在线免费观看 | 国产小视频免费在线观看 | 亚洲高清视频一区二区三区 | 一区二区 久久 | 国内精品久久久久久久久久久 | 五月天婷婷视频 | 午夜久操 | 91丨九色丨国产在线 | 日日夜夜噜噜噜 | 人人澡超碰碰 | 99久久精品免费看国产 | 视频成人免费 | 欧美与欧洲交xxxx免费观看 | 免费成人在线观看视频 | 中文字幕在线观看网 | 日韩欧三级 | 精品视频在线看 | 国产精品入口麻豆 | 欧美黑人性猛交 | 91成人免费观看视频 | 国产高清在线精品 | 天天插天天干 | 999一区二区三区 | 六月天综合网 | 成年人在线观看视频免费 | 三级午夜片 | 97视频在线观看免费 | 在线观看福利网站 | 国产成人精品一区二区三区在线 | 亚洲精品成人在线 | av片中文字幕 | 视频在线精品 | 免费看一级特黄a大片 | 午夜视频免费 | 在线看小早川怜子av | 九色精品免费永久在线 | 国产精品久久久久亚洲影视 | 免费一区在线 | 日本久久不卡视频 | 天天射天天做 | av在线网站大全 | 色婷婷视频在线观看 | 九色视频网站 | 久久精品79国产精品 | 1区2区3区在线观看 三级动图 | 久久99热精品这里久久精品 | 高清不卡一区二区在线 | 天天草天天操 | 美女黄频在线观看 | 国产一区二区在线观看视频 | 中文字幕免费高清av | 99久久婷婷国产一区二区三区 | 成人黄大片视频在线观看 | 51久久夜色精品国产麻豆 | 在线看成人av | 狠狠色丁香婷婷综合最新地址 | 在线日韩精品视频 | 日本黄色片一区二区 | 97精品超碰一区二区三区 | 亚洲精品视频免费 | 九九国产精品视频 | 中文字幕乱视频 | 夜夜操网站 | 精品99在线视频 | 国产黄色精品网站 | 国产福利91精品一区二区三区 | 亚洲成av人片在线观看无 | 国产福利在线免费 | 女人久久久久 | 视频在线观看国产 | 亚洲成人黄色在线 | 成人午夜电影久久影院 |