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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux grep sed awk

發布時間:2025/4/14 linux 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux grep sed awk 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux 文本編輯命令grep sed awk(轉)
?
?

grep

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。
grep的工作方式是這樣的:它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結果被送到屏幕,不影響原文件內容。
grep可用于shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。
1. grep正則表達式元字符集(基本集)

^?錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
$?錨定行的結束 如:'grep$'匹配所有以grep結尾的行。
.?匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符,然后是p。?
*?匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格后緊跟grep的行。 .*一起用代表任意字符。
[]?匹配一個指定范圍內的字符,如'[Gg]rep'匹配Grep和grep。
[^]?匹配一個不在指定范圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
\(..\)?標記匹配字符,如'\(love\)',love被標記為1。
\<?錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\>?錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
x\{m\}?重復字符x,m次,如:'0\{5\}'匹配包含5個o的行。
x\{m,\}?重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
x\{m,n\}?重復字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10個o的行。
\w?匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數字字符,然后是p。
\W?\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。
\b?單詞鎖定符,如: '\bgrepb\'只匹配grep。
2. 用于egrep和 grep -E的元字符擴展集
+?匹配一個或多個先前的字符。如:'[a-z]+able',匹配一個或多個小寫字母后跟able的串,如loveable,enable,disable等。
??匹配零個或多個先前的字符。如:'gr?p'匹配gr后跟一個或沒有字符,然后是p的行。
a|b|c?匹配a或b或c。如:grep|sed匹配grep或sed
()?分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。
x{m},x{m,},x{m,n}?作用同x\{m\},x\{m,\},x\{m,n\}
4. POSIX字符類
為了在不同國家的字符編碼中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符類,如[:alnum:]是A-Za-z0-9的另一個寫法。要把它們放到[]號內才能成為正則表達式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符類。
[:alnum:]?文字數字字符
[:alpha:]文字字符 [:digit:]?數字字符[:graph:]?非空字符(非空格、控制字符)[:lower:]?小寫字符[:cntrl:]?控制字符[:print:]?非空字符(包括空格)[:punct:]?標點符號[:space:]?所有空白字符(新行,空格,制表符)[:upper:]?大寫字符[:xdigit:]?十六進制數字(0-9,a-f,A-F)
4. Grep命令選項
-??同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示匹配行的上下2行。
-b,--byte-offset?打印匹配行前面打印該行所在的塊號碼。
-c,--count?只打印匹配的行數,不顯示匹配的內容。
-f File,--file=File?從文件中提取模板。空文件中包含0個模板,所以什么都不匹配。
-h,--no-filename?當搜索多個文件時,不顯示匹配文件名前綴。
-i,--ignore-case?忽略大小寫差別。
-q,--quiet?取消顯示,只返回退出狀態。0則表示找到了匹配的行。
-l,--files-with-matches?打印匹配模板的文件清單。
-L,--files-without-match?打印不匹配模板的文件清單。
-n,--line-number?在匹配的行前面打印行號。
-s,--silent?不顯示關于不存在或者無法讀取文件的錯誤信息。
-v,--revert-match?反檢索,只顯示不匹配的行。
-w,--word-regexp?如果被\<和\>引用,就把表達式做為一個單詞搜索。
-V,--version?顯示軟件版本信息。
5. 實例
要用好grep這個工具,其實就是要寫好正則表達式,所以這里不對grep的所有功能進行實例講解,只列幾個例子,講解一個正則表達式的寫法。
$ ls -l | grep '^a'?
通過管道過濾ls -l輸出的內容,只顯示以a開頭的行。
$ grep 'test' d*?
顯示所有以d開頭的文件中包含test的行。
$ grep 'test' aa bb cc?
顯示在aa,bb,cc文件中匹配test的行。
$ grep '[a-z]\{5\}' aa?
顯示所有包含每個字符串至少有5個連續小寫字符的字符串的行。
$ grep 'w\(es\)t.*\1' aa?
如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用"\"號進行轉義,直接寫成'w(es)t.*\1'就可以了。

sed 是一個精簡的、非交互式的編輯器。它能執行與編輯vi和emacs相同的編輯任務。sed編輯器不提供交互使用方式:只能在命令行輸入編輯命令、指定文件名,然后在屏幕上察看輸出。sed編輯器沒有破壞性。它不會修改文件,除非用shell重定向來保存輸出結果。缺省情況下,所以的輸出都被打印到屏幕上。
sed 編輯器在shell腳本中很有用,因為在shell腳本中使用像vi或emacs這類交互式編輯器,要求腳本用戶精通該編輯器,而且還會導致用戶對打開的文件做出不需要的修改。如果需要執行多項編輯任務,或是不想為shell命令行上的sed命令加引號,也可以把sed命令寫在一個叫做sed腳本的文件里。記住,在命令行輸入命令時,shell會設法轉換命令中所有的元字符或空白。sed命令中凡是可能被shell解釋的字符都必須加引號進行保護。
sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。以下介紹的是Gnu版本的Sed 3.02。
1. 定址功能
可以通過定址來定位你所希望編輯的行,該地址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的范圍(包括行數表示的那兩行)。如1,3表示1,2,3行,美元符號($)表示最后一行。范圍可以通過數據,正則表達式或者二者結合的方式確定 。?
2.sed命令調用格式
調用sed命令有兩種形式:
?? * sed [options] 'command' file(s)
?? * sed [options] -f scrīptfile file(s)
a\ 在當前行后面加入一行文本。
b lable 分支到腳本中帶有標記的地方,如果分支不存在則分支到腳本的末尾。?
c\ 用新的文本改變本行的文本。?
d 從模板塊(Pattern space)位置刪除行。?
D 刪除模板塊的第一行。?
i\ 在當前行上面插入文本。?
h 拷貝模板塊的內容到內存中的緩沖區。?
H 追加模板塊的內容到內存中的緩沖區。?
g 獲得內存緩沖區的內容,并替代當前模板塊中的文本。?
G 獲得內存緩沖區的內容,并追加到當前模板塊文本的后面。?
l 列表不能打印字符的清單。?
n 讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。?
N 追加下一個輸入行到模板塊后面并在二者間嵌入一個新行,改變當前行號碼。?
p 打印模板塊的行。?
P(大寫) 打印模板塊的第一行。?
q 退出Sed。?
r file 從file中讀行。?
t label if分支,從最后一行開始,條件一旦滿足或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。?
T label 錯誤分支,從最后一行開始,一旦發生錯誤或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。?
w file 寫并追加模板塊到file末尾。?
W file 寫并追加模板塊的第一行到file末尾。?
! 表示后面的命令對所有沒有被選定的行發生作用。?
s/re/string 用string替換正則表達式re。?
= 打印當前行號碼。
*把注釋擴展到下一個換行符以前。?
以下的是替換標記?
?????? *???? g表示行內全面替換。
?????? *???? p表示打印行。
?????? *???? w表示把行寫入一個文件。
?????? *???? x表示互換模板塊中的文本和緩沖區中的文本。
?????? *???? y表示把一個字符翻譯為另外的字符(但是不用于正則表達式)
3. 選項 -e command, --expression=command?
允許多臺編輯。
-h, --help 打印幫助,并顯示bug列表的地址。
-n, --quiet, --silent 取消默認輸出。
-f, --filer=scrīpt-file 引導sed腳本文件名。
-V, --version 打印版本和版權信息。
4. 元字符集?
^ 錨定行的開始 如:/^sed/匹配所有以sed開頭的行。?
$ 錨定行的結束 如:/sed$/匹配所有以sed結尾的行。?
. 匹配一個非換行符的字符 如:/s.d/匹配s后接一個任意字符,然后是d。
* 匹配零或多個字符 如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。?
[] 匹配一個指定范圍內的字符,如/[Ss]ed/匹配sed和Sed。?
[^] 匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。?
\(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。?
& 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。?
\< 錨定單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。?
\> 錨定單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。 x\{m\} 重復字符x,m次,如:/0\{5\}/匹配包含5個o的行。?
x\{m,\} 重復字符x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。 x\{m,n\} 重復字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10個o的行。?
5. 實例?
5.1刪除:d命令
?????? *??? $ sed '2d' example-----刪除example文件的第二行。
?????? *??? $ sed '2,$d' example-----刪除example文件的第二行到末尾所有行。
?????? *??? $ sed '$d' example-----刪除example文件的最后一行。
?????? *??? $ sed '/test/'d example-----刪除example文件所有包含test的行。
5.2替換:s命令
?????? *??? $ sed 's/test/mytest/g' example-----在整行范圍內把test替換為mytest。如果沒有g標記,則只有每行第一個匹配的test被替換成mytest。
?????? *??? $ sed -n 's/^test/mytest/p' example-----(-n)選項和p標志一起使用表示只打印那些發生替換的行。也就是說,如果某一行開頭的test被替換成mytest,就打印它。
?????? *??? $ sed 's/^192.168.0.1/&localhost/' example-----&符號表示替換換字符串中被找到的部份。所有以192.168.0.1開頭的行都會被替換成它自已加 localhost,變成192.168.0.1localhost。
?????? *??? $ sed -n 's/\(love\)able/\1rs/p' example-----love被標記為1,所有loveable會被替換成lovers,而且替換的行會被打印出來。
?????? *??? $ sed 's#10#100#g' example-----不論什么字符,緊跟著s命令的都被認為是新的分隔符,所以,“#”在這里是分隔符,代替了默認的“/”分隔符。表示把所有10替換成100。
5.3選定行的范圍:逗號
?????? *??? $ sed -n '/test/,/check/p' example-----所有在模板test和check所確定的范圍內的行都被打印。
?????? *??? $ sed -n '5,/^test/p' example-----打印從第五行開始到第一個包含以test開始的行之間的所有行。
?????? *??? $ sed '/test/,/check/s/$/sed test/' example-----對于模板test和west之間的行,每行的末尾用字符串sed test替換。
5.4多點編輯:e命令?
?????? *??? $ sed -e '1,5d' -e 's/test/check/' example-----(-e)選項允許在同一行里執行多條命令。如例子所示,第一條命令刪除1至5行,第二條命令用check替換test。命令的執行順序對結果有影響。如果兩個命令都是替換命令,那么第一個替換命令將影響第二個替換命令的結果。
?????? *??? $ sed --expression='s/test/check/' --expression='/love/d' example-----一個比-e更好的命令是--expression。它能給sed表達式賦值。
5.5從文件讀入:r命令?
?????? *??? $ sed '/test/r file' example-----file里的內容被讀進來,顯示在與test匹配的行后面,如果匹配多行,則file的內容將顯示在所有匹配行的下面。
5.6寫入文件:w命令
?????? *??? $ sed -n '/test/w file' example-----在example中所有包含test的行都被寫入file里。
5.7追加命令:a命令
?????? *??? $ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test開頭的行后面,sed要求命令a后面有一個反斜杠。
5.8插入:i命令
?? $ sed '/test/i\\
?? new line
?? -------------------------' example
?? 如果test被匹配,則把反斜杠后面的文本插入到匹配行的前面。
下一個:n命令
?????? *??? $ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,則移動到匹配行的下一行,替換這一行的aa,變為bb,并打印該行,然后繼續。
5.9變形:y命令?
?????? *??? $ sed '1,10y/abcde/ABCDE/' example-----把1--10行內所有abcde轉變為大寫,注意,正則表達式元字符不能使用這個命令。
5.10退出:q命令?
?????? *??? $ sed '10q' example-----打印完第10行后,退出sed。
5.11保持和獲取:h命令和G命令?
?????? *??? $ sed -e '/test/h' -e '$G example-----在sed處理文件的時候,每一行都被保存在一個叫模式空間的臨時緩沖區中,除非行被刪除或者輸出被取消,否則所有被處理的行都將打印在屏幕上。接著模式空間被清空,并存入新的一行等待處理。在這個例子里,匹配test的行被找到后,將存入模式空間,h命令將其復制并存入一個稱為保持緩存區的特殊緩沖區內。第二條語句的意思是,當到達最后一行后,G命令取出保持緩沖區的行,然后把它放回模式空間中,且追加到現在已經存在于模式空間中的行的末尾。在這個例子中就是追加到最后一行。簡單來說,任何包含test的行都被復制并追加到該文件的末尾。
5.12保持和互換:h命令和x命令?
?????? *??? $ sed -e '/test/h' -e '/check/x' example -----互換模式空間和保持緩沖區的內容。也就是把包含test與check的行互換。
6. 腳本?
Sed腳本是一個sed的命令清單,啟動Sed時以-f選項引導腳本文件名。Sed對于腳本中輸入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多個命令,要用分號分隔。以#開頭的行為注釋行,且不能跨行。 7. 小技巧?
?? *??? 在sed的命令行中引用shell變量時要使用雙引號,而不是通常所用的單引號。下面是一個根據name變量的內容來刪除named.conf文件中zone段的腳本:
???? name='zone\ "localhost"'
???? sed "/$name/,/};/d" named.conf

awk

awk是一種程序語言,對文檔資料的處理具有很強的功能。awk名稱是由它三個最初設計者的姓氏的第一個字母而命名的: Alfred V. Aho、Peter J. We i n b e rg e r、Brian W. Kernighan。
awk 最初在1 9 7 7年完成。1985年發表了一個新版本的awk,它的功能比舊版本增強了不少。awk能夠用很短的程序對文檔里的資料做修改、比較、提取、打印等處理。如果使用C 或Pascal等語言編寫程序完成上述的任務會十分不方便而且很花費時間,所寫的程序也會很大。
awk不僅僅是一個編程語言,它還是linux系統管理員和程序員的一個不可缺少的工具。
awk語言本身十分好學,易于掌握,并且特別的靈活。
gawk是G N U計劃下所做的awk,gawk最初在1 9 8 6年完成,之后不斷地被改進、更新。
gawk 包含awk 的所有功能。
1.gawk的主要功能
gawk 的主要功能是針對文件的每一行( l i n e ),也就是每一條記錄,搜尋指定的格式。當某一行符合指定的格式時,gawk 就會在此行執行被指定的動作。gawk 依此方式自動處理輸入文件的每一行直到輸入文件檔案結束。
gawk經常用在如下的幾個方面:
? 根據要求選擇文件的某幾行,幾列或部分字段以供顯示輸出。
? 分析文檔中的某一個字出現的頻率、位置等。
? 根據某一個文檔的信息準備格式化輸出。
? 以一個功能十分強大的方式過濾輸出文檔。
? 根據文檔中的數值進行計算。
2.如何執行gawk程序
基本上有兩種方法可以執行gawk程序。
如果gawk 程序很短,則可以將gawk 直接寫在命令行,如下所示:
gawk 'program' input-file1 input-file2 ...
其中program 包括一些pattern和action。
如果gawk 程序較長,較為方便的做法是將gawk 程序存在一個文件中,
gawk 的格式如下所示:
gawk -f program-file input-file1 input-file2 ...
gawk 程序的文件不止一個時,執行gawk 的格式如下所示:
gawk -f program-file1 -f program-file2 ... input-file1 input-file2 ...
3.文件、記錄和字段
一般情況下,gawk可以處理文件中的數值數據,但也可以處理字符串信息。如果數據沒有存儲在文件中,可以通過管道命令和其他的重定向方法給gawk提供輸入。當然, gawk只能處理文本文件(A S C I I碼文件)。?
電話號碼本就是一個gawk可以處理的文件的簡單例子。電話號碼本由很多條目組成,每一個條目都有同樣的格式:姓、名、地址、電話號碼。每一個條目都是按字母順序排列。
在gawk中,每一個這樣的條目叫做一個記錄。它是一個完整的數據的集合。例如,電話號碼本中的Smith John這個條目,包括他的地址和電話號碼,就是一條記錄。
記錄中的每一項叫做一個字段。在gawk中,字段是最基本的單位。多個記錄的集合組成了一個文件。
大多數情況下,字段之間由一個特殊的字符分開,像空格、TAB、分號等。這些字符叫做字段分隔符。請看下面這個/etc/passwd文件:
tparker;t36s62hs;501;101;TimParker;/home/tparker;/bin/bash
etreijs;2ys639dj3;502;101;EdTreijs;/home/etreijs;/bin/tcsh
ychow;1h27sj;503;101;Yvonne Chow;/home/ychow;/bin/bash
你可以看出/etc/passwd文件使用分號作為字段分隔符。/etc/passwd文件中的每一行都包括七個字段:用戶名;口令;用戶I D;工作組I D;注釋; h o m e目錄;啟始的外殼。如果你想要查找第六個字段,只需數過五個分號即可。
但考慮到以下電話號碼本的例子,你就會發現一些問題:
Smith John 13 Wilson St. 555-1283
Smith John 2736 Artside Dr Apt 123 555-2736
Smith John 125 Westmount Cr 555-1726
雖 然我們能夠分辨出每個記錄包括四個字段,但g a w k卻無能為力。電話號碼本使用空格作為分隔符,所以gawk認為Smith是第一個字段,John是第二個字段,13是第三個字段,依次類推。就gawk 而言,如果用空格作為字段分隔符的話,則第一個記錄有六個字段,而第二個記錄有八個字段。
所以,我們必須找出一個更好的字段分隔符。例如,像下面一樣使用斜杠作為字段分隔符:
Smith/John/13 Wilson St./555-1283
Smith/John/2736 Artside Dr/Apt/123/555-2736
Smith/John/125 Westmount Cr/555-1726
如果你沒有指定其他的字符作為字段分隔符,那么gawk將缺省地使用空格或TAB作為字段分隔符。
4.模式和動作
在gawk語言中每一個命令都由兩部分組成:一個模式(pattern)和一個相應的動作
(action)。只要模式符合,gawk就會執行相應的動作。其中模式部分用兩個斜杠括起來,而動
作部分用一對花括號括起來。例如:
/pattern1/{action1}
/pattern2/{action2}
/pattern3/{action3}
所有的gawk程序都是由這樣的一對對的模式和動作組成的。其中模式或動作都能夠被省
略,但是兩個不能同時被省略。如果模式被省略,則對于作為輸入的文件里面的每一行,動作
都會被執行。如果動作被省略,則缺省的動作被執行,既顯示出所有符合模式的輸入行而不做
任何的改動。
下面是一個簡單的例子,因為gawk 程序很短,所以將gawk 程序直接寫在外殼命令行:
gawk '/tparker/' /etc/passwd?
此程序在上面提到的/etc/passwd 文件中尋找符合tparker模式的記錄并顯示(此例中沒有動作,所以缺省的動作被執行)。
讓我們再看一個例子:
gawk '/UNIX/{print $2}' file2.data
此命令將逐行查找file2.data文件中包含UNIX的記錄,并打印這些記錄的第二個字段。
你也可以在一個命令中使用多個模式和動作對,例如:
gawk '/scandal/{print $1} /rumor/{print $2}' gossip_file
此命令搜索文件gossip_file中包括scandal的記錄,并打印第一個字段。然后再從頭搜索
gossip_file中包括rumor的記錄,并打印第二個字段。
5.比較運算和數值運算
gawk有很多比較運算符,下面列出重要的幾個:
= = 相等
! = 不相等
> 大于
< 小于
> = 大于等于
< = 小于等于
例如:
gawk '$4 > 100' testfile
將會顯示文件testfile 中那些第四個字段大于1 0 0的記錄。
下表列出了gawk中基本的數值運算符。
運算符說明示例
+ 加法運算2+6
- 減法運算6-3
* 乘法運算2*5
/ 除法運算8/4
^ 乘方運算3^2 (=9)
% 求余數9%4 (=1)
例如:
{print $3/2}
顯示第三個字段被2除的結果。
在gawk中,運算符的優先權和一般的數學運算的優先權一樣。例如:
{print $1+$2*$3}
顯示第二個字段和第三個字段相乘,然后和第一個字段相加的結果。
你也可以用括號改變優先次序。例如:
{print ($1+$2)*$3}
顯示第一個字段和第二個字段相加,然后和第三個字段相乘的結果。
6.內部函數
gawk中有各種的內部函數,現在介紹如下:?
6.1 隨機數和數學函數
sqrt(x) 求x 的平方根
sin(x) 求x 的正弦函數
cos(x) 求x 的余弦函數
atan2(x,y) 求x / y的余切函數
log(x) 求x 的自然對數
exp(x) 求x 的e 次方
int(x) 求x 的整數部分
rand() 求0 和1之間的隨機數
srand(x) 將x 設置為rand()的種子數
6.2 字符串的內部函數
? index( in,find) 在字符串in中尋找字符串find 第一次出現的地方,返回值是字符串
find 出現在字符串in 里面的位置。如果在字符串in 里面找不到字符串find,則返回值為0。
例如:
print index("peanut"," a n " )
顯示結果3。
? length(string) 求出string 有幾個字符。
例如:
length("abcde")
顯示結果5。
? match(string,regexp) 在字符串string 中尋找符合regexp的最長、最靠左邊的子字符串。返回值是regexp 在string 的開始位置,即index值。match 函數將會設置系統變量
RSTART等于index的值,系統變量RLENGTH 等于符合的字符個數。如果不符合,則會
設置RSTART為0、RLENGTH 為- 1。
? sprintf( format,expression1,. . . ) 和printf 類似,但是sprintf 并不顯示,而是返回字符串。
例如:
sprintf("pi = %.2f (approx.)",2 2 / 7 )
返回的字符串為pi = 3.14 (approx.)
? s u b ( r e g e x p,r e p l a c e m e n t,t a rg e t ) 在字符串t a rget 中尋找符合regexp 的最長、最靠左的
地方,以字串replacement 代替最左邊的r e g e x p。
例如:
str = "water,water,everywhere"
sub( /at/, "ith",str)
結果字符串str會變成wither,water,everywhere
? gsub(regexp,replacement,target) 與前面的sub類似。在字符串target 中尋找符合regexp的所有地方,以字符串replacement 代替所有的regexp。
例如:
str = "water,water,everywhere"
gsub( /at/, "ith",str)
結果字符串str會變成wither,wither,everywhere
? substr(string,start,length)返回字符串string 的子字符串,這個子字符串的長度為length,從第start個位置開始。
例如:
substr("washington",5,3)
返回值為ing
如果沒有length,則返回的子字符串是從第start 個位置開始至結束。
例如:
substr("washington",5)
返回值為ington。
? tolower(string) 將字符串s t r i n g的大寫字母改為小寫字母。
例如:
tolower("MiXeD cAsE 123")
返回值為mixed case 123。
? toupper(string) 將字符串s t r i n g的小寫字母改為大寫字母。
例如:
toupper("MiXeD cAsE 123")
返回值為MIXED CASE 123。
6.3 輸入輸出的內部函數
? close(filename) 將輸入或輸出的文件filename 關閉。
? system(command) 此函數允許用戶執行操作系統的指令,執行完畢后將回到gawk程序。
例如:
BEGIN {system("ls")}
7.字符串和數字
字符串就是一連串的字符,它可以被gawk逐字地翻譯。字符串用雙引號括起來。數字不能用雙引號括起來,并且gawk將它當作一個數值。例如:
gawk '$1 != "Tim" {print}' testfile
此命令將顯示第一個字段和Tim不相同的所有記錄。如果命令中Tim兩邊不用雙引號,gawk將不能正確執行。
再如:
gawk '$1 == "50" {print}' testfile
此命令將顯示所有第一個字段和5 0這個字符串相同的記錄。g a w k不管第一字段中的數值
的大小,而只是逐字地比較。這時,字符串5 0和數值5 0并不相等。
8.格式化輸出
我們可以讓動作顯示一些比較復雜的結果。例如:
gawk '$1 != "Tim" {print $1,$ 5,$ 6,$2}' testfile
將顯示testfile文件中所有第一個字段和Ti m不相同的記錄的第一、第五、第六和第二個字段。
進一步,你可以在p r i n t動作中加入字符串,例如:
gawk '$1 != "Tim" {print "The entry for ",$ 1,"is not Tim. ",$2}' testfile
print動作的每一部分用逗號隔開。
借用C語言的格式化輸出指令,可以讓gawk的輸出形式更為多樣。這時,應該用printf而不是print。例如:
{printf "%5s likes this language\n",$ 2 }
printf中的%5s 部分告訴gawk如何格式化輸出字符串,也就是輸出5個字符長。它的值由printf 的最后部分指出,在此是第二個字段。\n是回車換行符。如果第二個字段中存儲的是人名,則輸出結果大致如下:
Tim likes this language
Geoff likes this language
Mike likes this language
Joe likes this language
gawk 語言支持的其他格式控制符號如下:
? c 如果是字符串,則顯示第一個字符;如果是整數,則將數字以ASCII 字符的形式顯示。
例如:
printf “% c”,65
結果將顯示字母A。
? d 顯示十進制的整數。
? i 顯示十進制的整數。
? e 將浮點數以科學記數法的形式顯示。
例如:
print “$ 4 . 3 e”,1950
結果將顯示1.950e+03。
? f 將數字以浮點的形式顯示。
? g 將數字以科學記數法的形式或浮點的形式顯示。數字的絕對值如果大于等于0 . 0 0 0 1則
以浮點的形式顯示,否則以科學記數法的形式顯示。
? o 顯示無符號的八進制整數。
? s 顯示一個字符串。
? x 顯示無符號的十六進制整數。1 0至1 5以a至f表示。
? X 顯示無符號的十六進制整數。1 0至1 5以A至F表示。
? % 它并不是真正的格式控制字符,% %將顯示%。
當你使用這些格式控制字符時,你可以在控制字符前給出數字,以表示你將用的幾位或幾個字符。例如,6 d表示一個整數有6位。再請看下面的例子:
{printf "%5s works for %5s and earns %2d an hour",$1,$2,$3}
將會產生類似如下的輸出:
Joe works for Mike and earns 12 an hour
當處理數據時,你可以指定數據的精確位數
{printf "%5s earns $%.2f an hour",$ 3,$ 6 }
其輸出將類似于:
Joe earns $12.17 an hour
你也可以使用一些換碼控制符格式化整行的輸出。之所以叫做換碼控制符,是因為gawk對這些符號有特殊的解釋。下面列出常用的換碼控制符:
\a 警告或響鈴字符。
\b 后退一格。
\f 換頁。
\n 換行。
\r 回車。
\t Ta b。
\v 垂直的t a b。
9.改變字段分隔符
在g a w k中,缺省的字段分隔符一般是空格符或TA B。但你可以在命令行使用- F選項改變字符分隔符,只需在- F后面跟著你想用的分隔符即可。
gawk -F" ;"'/tparker/{print}' /etc/passwd
在此例中,你將字符分隔符設置成分號。注意: - F必須是大寫的,而且必須在第一個引號之前。
10.元字符
gawk語言在格式匹配時有其特殊的規則。例如, cat能夠和記錄中任何位置有這三個字符的字段匹配。但有時你需要一些更為特殊的匹配。如果你想讓cat只和concatenate匹配,則需要在格式兩端加上空格:
/ cat / {print}
再例如,你希望既和cat又和CAT匹配,則可以使用或(|):
/ cat | CAT / {print}
在gawk中,有幾個字符有特殊意義。下面列出可以用在gawk格式中的這些字符:
? ^ 表示字段的開始。
例如:
$3 ~ /^b/
如果第三個字段以字符b開始,則匹配。
? $ 表示字段的結束。
例如:
$3 ~ /b$/
如果第三個字段以字符b結束,則匹配。
? . 表示和任何單字符m匹配。
例如:
$3 ~ /i.m/
如果第三個字段有字符i,則匹配。
? | 表示“或”。
例如:
/ c a t | C AT/
和cat 或C AT字符匹配。
? * 表示字符的零到多次重復。
例如:
/UNI*X/
和U N X、U N I X、U N I I X、U N I I I X等匹配。
? + 表示字符的一次到多次重復。
例如:
/UNI+X/
和U N I X、U N I I X等匹配。
? \{a,b\} 表示字符a次到b次之間的重復。
例如:
/ U N I \ { 1,3 \ } X
和U N I X、U N I I X和U N I I I X匹配。
? ? 表示字符零次和一次的重復。
例如:
/UNI?X/
和UNX 和U N I X匹配。
? [] 表示字符的范圍。
例如:
/I[BDG]M/
和I B M、I D M和I G M匹配
? [^] 表示不在[ ]中的字符。
例如:
/I[^DE]M/
和所有的以I開始、M結束的包括三個字符的字符串匹配,除了IDM和IEM之外。
11.調用gawk程序
當需要很多對模式和動作時,你可以編寫一個gawk程序(也叫做gawk腳本)。在gawk程序中,你可以省略模式和動作兩邊的引號,因為在gawk程序中,模式和動作從哪開始和從哪結束時是很顯然的。
你可以使用如下命令調用g a w k程序:
gawk -f scrīpt filename
此命令使gawk對文件filename執行名為scrīpt的gawk程序。
如果你不希望使用缺省的字段分隔符,你可以在f選項后面跟著F選項指定新的字段分隔符(當然你也可以在gawk程序中指定),例如,使用分號作為字段分隔符:
gawk -f scrīpt -F";" filename
如果希望gawk 程序處理多個文件,則把各個文件名羅列其后:
gawk -f scrīpt filename1 filename2 filename3 ...
缺省情況下, gawk的輸出將送往屏幕。但你可以使用Linux的重定向命令使gawk的輸出送往一個文件:
gawk -f scrīpt filename > save_file
12.BEGIN和END
有兩個特殊的模式在gawk中非常有用。BEGIN模式用來指明gawk開始處理一個文件之前執行一些動作。BEGIN經常用來初始化數值,設置參數等。END模式用來在文件處理完成后執行一些指令,一般用作總結或注釋。
BEGIN 和END中所有要執行的指令都應該用花括號括起來。BEGIN 和END必須使用大寫。
請看下面的例子:
BEGIN { print "Starting the process the file" }
$1 == "UNIX" {print}
$2 > 10 {printf "This line has a value of %d",$ 2 }
END { print "Finished processing the file. Bye!"}
此程序中,先顯示一條信息: Starting the process the file,然后將所有第一個字段等于
UNIX的整條記錄顯示出來,然后再顯示第二個字段大于10 的記錄,最后顯示信息: Finished processing the file. Bye!
13.變量
在gawk中,可以用等號( = )給一個變量賦值:
var1=10
在gawk中,你不必事先聲明變量類型。
請看下面的例子:
$1 == "Plastic" { count = count + 1 }
如果第一個字段是Plastic,則count的值加1。在此之前,我們應當給count賦予過初值,一般是在BEGIN部分。
下面是比較完整的例子:
BEGIN { count = 0 }
$5 == "UNIX" { count = count + 1 }
END { printf "%d occurrences of UNIX were found",count }
變量可以和字段和數值一起使用,所以,下面的表達式均為合法:
count = count + $6
count = $5 - 8
count = $5 + var1
變量也可以是格式的一部分,例如:
$2 > max_value {print "Max value exceeded by ",$2 - max_value}
$4 - var1 < min_value {print "Illegal value of ",$ 4 }
14.內置變量
gawk語言中有幾個十分有用的內置變量,現在列于下面:
NR 已經讀取過的記錄數。
FNR 從當前文件中讀出的記錄數。
FILENAME 輸入文件的名字。
FS 字段分隔符(缺省為空格)。
RS 記錄分隔符(缺省為換行)。
OFMT 數字的輸出格式(缺省為% g)。
OFS 輸出字段分隔符。
ORS 輸出記錄分隔符。
NF 當前記錄中的字段數。
如果你只處理一個文件,則NR 和FNR 的值是一樣的。但如果是多個文件, NR是對所有的文件來說的,而FNR 則只是針對當前文件而言。
例如:
NR <= 5 {print "Not enough fields in the record"}
檢查記錄數是否小于5,如果小于5,則顯示出錯信息。
FS十分有用,因為FS控制輸入文件的字段分隔符。例如,在BEGIN格式中,使用如下的命令:
F S = " : "
15. 控制結構
15.1 if 表達式
if 表達式的語法如下:
if (expression){
c o m m a n d s
}
e l s e {
c o m m a n d s
}
例如:
# a simple if loop
(if ($1 == 0){
print "This cell has a value of zero"
}
else {
printf "The value is %d\n",$ 1
} )
再看下一個例子:
# a nicely formatted if loop
(if ($1 > $2){
print "The first column is larger"
}
else {
print "The second column is larger"
} )
15.2 while 循環
while 循環的語法如下:
while (expression){
c o m m a n d s
}
例如:
# interest calculation computes compound interest
# inputs from a file are the amount,interest_rateand years
{var = 1
while (var <= $3) {
printf(" %f\n",$1*(1+$2)^var)
var++}
}
15.3 for 循環
for 循環的語法如下:
for (initialization; expression; increment) {
c o m m a n d
}
例如:
# interest calculation computes compound interest
# inputs from a file are the amount,interest_rateand years
{for (var=1; var <= $3; var++) {
printf(" %f\n",$1*(1+$2)^var)
}
}
5.4 next 和exit
next 指令用來告訴gawk 處理文件中的下一個記錄, 而不管現在正在做什么。語法如下:
{ command1
c o m m a n d 2
c o m m a n d 3
next
c o m m a n d 4
}
程序只要執行到n e x t指令,就跳到下一個記錄從頭執行命令。因此,本例中, c o m m a n d 4指令永遠不會被執行。
程序遇到exit指令后,就轉到程序的末尾去執行END,如果有END的話。
16.數組
gawk語言支持數組結構。數組不必事先初始化。聲明一個數組的方法如下:
a r r a y n a m e [ n u m ] = v a l u e
請看下面的例子:
# reverse lines in a file
{line[NR] = $0 } # remember each line
END {var=NR # output lines in reverse order
while (var > 0){
print line[var]
v a r - -
}
}
此段程序讀取一個文件的每一行,并用相反的順序顯示出來。我們使用NR作為數組的下標來存儲文件的每一條記錄,然后在從最后一條記錄開始,將文件逐條地顯示出來。
17.用戶自定義函數
復雜的gawk 程序常常可以使用自己定義的函數來簡化。調用用戶自定義函數與調用內部函數的方法一樣。函數的定義可以放在gawk 程序的任何地方。
用戶自定義函數的格式如下:
function name (parameter-list) {
b o d y - o f - f u n c t i o n
}
name 是所定義的函數的名稱。一個正確的函數名稱可包括一序列的字母、數字、下標線(underscores),但是不可用數字做開頭。parameter- list 是函數的全部參數的列表,各個參數之間以逗點隔開。body-of-function 包含gawk 的表達式,它是函數定義里最重要的部分,它決定函數實際要做的事情。
下面這個例子,會將每個記錄的第一個字段的值的平方與第二個字段的值的平方加起來。
{print "sum =",S q u a r e S u m ( $ 1,$ 2 ) }
function SquareSum(x,y) {
s u m = x * x + y * y
return sum
}
到此,我們已經知道了gawk的基本用法。gawk語言十分易學好用,例如,你可以用gawk編寫一段小程序來計算一個目錄中所有文件的個數和容量。如果用其他的語言,如C語言,則會十分的麻煩,相反,gawk只需要幾行就可以完成此工作。
18.幾個實例
最后,再舉幾個gawk的例子:
gawk '{if (NF > max) max = NF}
END {print max}'
此程序會顯示所有輸入行之中字段的最大個數。
gawk 'length($0) > 80'
此程序會顯示出超過80 個字符的每一行。此處只有模式被列出,動作是采用缺省值顯示整個記錄。
gawk 'NF > 0'
顯示擁有至少一個字段的所有行。這是一個簡單的方法,將一個文件里的所有空白行刪除。
gawk 'BEGIN {for (i = 1; i <= 7; i++)
print int(101 * rand())}'
此程序會顯示出范圍是0 到100 之間的7 個隨機數。
ls -l files | gawk '{x += $4}; END {print "total bytes: " x}'
此程序會顯示出所有指定的文件的總字節數。
expand file | gawk '{if (x < length()) x = length()}
END {print "maximum line length is " x}'
此程序會將指定文件里最長一行的長度顯示出來。expand會將tab改成space,所以是用實際的右邊界來做長度的比較。
gawk 'BEGIN {FS = ":"}
{print $1 | "sort"}' /etc/passwd
此程序會將所有用戶的登錄名稱,依照字母的順序顯示出來。
gawk '{nlines++}
END {print nlines}'
此程序會將一個文件的總行數顯示出來。
gawk 'END {print NR}'
此程序也會將一個文件的總行數顯示出來,但計算行數的工作由gawk來做。
gawk '{print NR,$ 0 } '
此程序顯示出文件的內容時,會在每行的最前面顯示出行號,它的函數與‘cat -n’類似。

總結

以上是生活随笔為你收集整理的linux grep sed awk的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久综合久久久 | 99久久免费看 | 午夜av大片| 久久精品999| 美女网站视频免费都是黄 | 天天射天天干天天 | 极品美女被弄高潮视频网站 | 日韩羞羞 | 中文乱幕日产无线码1区 | 欧美日韩性视频 | 国产精品一区二区三区在线 | 人人看黄色 | 国产香蕉视频 | 午夜精品av | 日韩二区在线观看 | 日韩黄色免费在线观看 | 中文字幕激情 | 日韩区欠美精品av视频 | 天天看天天干 | 国产免费不卡 | 欧美日韩精品免费观看 | 久久99精品国产麻豆婷婷 | 久久午夜国产 | 激情综合色播五月 | 天天爱天天草 | 久久久久久不卡 | 亚洲 欧美日韩 国产 中文 | 久久欧美综合 | 在线免费观看黄 | 国产成人精品午夜在线播放 | 一区二区中文字幕在线观看 | 亚洲v精品| 日日爱视频 | 一区二区三区四区在线免费观看 | 九九九在线观看 | 日韩精品免费一线在线观看 | 日韩高清在线一区 | 国产在线黄 | 天天天在线综合网 | 国产黄色播放 | 婷婷色婷婷 | 在线视频你懂 | 中文字幕在线资源 | 久久人人精 | 成人午夜电影网站 | 亚洲美女精品 | 91九色网站 | 日躁夜躁狠狠躁2001 | 亚洲国产欧洲综合997久久, | 国产小视频在线免费观看视频 | 久久免费公开视频 | 亚洲91中文字幕无线码三区 | 亚洲精品国产精品乱码不99热 | 久久久久久久久久亚洲精品 | 夜夜骑日日| 亚洲va在线va天堂va偷拍 | 欧美日韩国产三级 | 婷婷中文字幕 | av中文字幕日韩 | 久久永久免费视频 | 在线播放日韩 | 欧美韩国日本在线观看 | 毛片网在线播放 | 久久久久久高潮国产精品视 | 超碰午夜 | 成人小视频在线免费观看 | 九九免费在线看完整版 | 三级黄色在线观看 | 永久免费精品视频网站 | 亚洲第一av在线播放 | 国产精品久久久久久麻豆一区 | 九九九在线观看 | 亚洲女人天堂成人av在线 | 激情五月色播五月 | 99色在线观看 | av在线免费观看不卡 | 欧美久草网 | 国产精品不卡在线播放 | 国产在线不卡精品 | 91视频在线观看免费 | 亚洲精品视频播放 | 在线电影a | 欧美国产高清 | 麻豆一精品传二传媒短视频 | 中文字幕日韩av | 久久综合福利 | 久久一久久 | 精品一二三区视频 | 日本精品二区 | 国际精品网 | 久久99免费 | www最近高清中文国语在线观看 | 国产亚洲成人网 | 一区二区高清在线 | 国产成人91 | 日本黄区免费视频观看 | 三上悠亚在线免费 | 狠狠干天天操 | 视频在线观看入口黄最新永久免费国产 | av国产在线观看 | 3d黄动漫免费看 | 久久久国产高清 | 高潮久久久久久久久 | 欧美夫妻性生活电影 | 久久99精品国产99久久6尤 | 9色在线视频| 高清在线观看av | 亚洲一区二区三区在线看 | 国产精品久久久久久久久久久久午夜 | 中文字幕123区 | 成人 亚洲 欧美 | 久久久久美女 | 久久久综合 | 欧美婷婷色 | 91在线播放视频 | 97在线看 | 亚洲视频在线视频 | 九月婷婷综合网 | 国产精品一区二区中文字幕 | 91在线播放视频 | 国内久久久久 | 久久永久免费 | 97超碰在 | 国产视频美女 | 国产高清免费在线观看 | 日韩a在线观看 | 欧洲精品在线视频 | 麻豆视频免费入口 | 天天做天天爱天天爽综合网 | 成人性生交大片免费看中文网站 | 中文字幕高清有码 | 午夜手机电影 | 日本午夜免费福利视频 | 久久这里只有精品视频99 | 最近中文国产在线视频 | 一区二区精 | 九九在线国产视频 | 日韩av影视 | 在线 国产一区 | 国产精品一区在线观看 | 日本久久久久久久久久 | 人人干人人艹 | 亚洲精品久久久久中文字幕二区 | 国产理论影院 | 国产资源在线免费观看 | 天天操天天干天天 | 久久精品国产一区二区三 | 日韩在线观看一区 | 黄色成人在线观看 | 99re久久精品国产 | 久久福利国产 | 黄污视频网站大全 | 国产综合视频在线观看 | 成人91在线| 人人干狠狠干 | 国内精品久久久久久久久 | 国产精品久久久久久久久免费 | 国产乱视频 | 8090yy亚洲精品久久 | 在线观看亚洲专区 | 在线观看黄网站 | 永久免费观看视频 | 欧美激情另类 | 亚洲国产免费av | 欧美日韩精品在线播放 | 精品毛片一区二区免费看 | 日韩视频中文字幕 | 91av中文字幕 | 在线观看91 | 国内一级片在线观看 | 这里只有精品视频在线观看 | 波多野结衣一区二区三区中文字幕 | 亚洲综合视频在线观看 | 亚洲成av人影院 | 91av视频在线免费观看 | 亚洲理论电影 | 18国产精品白浆在线观看免费 | 色婷婷在线观看视频 | 麻豆免费视频网站 | 欧美精品一区二区蜜臀亚洲 | 91私密保健 | 狠狠干综合 | 免费麻豆视频 | 一区二区三区在线看 | 狠狠操操 | 超碰人人在线观看 | 97人人澡人人爽人人模亚洲 | 亚洲精品理论 | 激情五月***国产精品 | 亚州天堂 | 免费观看9x视频网站在线观看 | 狠狠干天天 | 特黄免费av | 中文字幕影片免费在线观看 | 中文字幕在线播放第一页 | 久久日本视频 | 国产福利免费看 | 日韩午夜小视频 | 人人爽人人爽人人爽学生一级 | 国产精品午夜久久久久久99热 | 丁香五婷 | 九九爱免费视频在线观看 | 97在线观看免费 | 成人蜜桃 | 久久精品成人热国产成 | 99视频免费播放 | 国产91在线看 | 日韩三级免费观看 | 久久高视频 | av网址aaa | 精品超碰| 成人毛片在线观看 | 97国产情侣爱久久免费观看 | 日韩精品久久久久 | 亚洲夜夜网 | 99热这里只有精品在线观看 | 超碰人人av | 91精品视频一区二区三区 | 中文字幕av最新 | av九九九| 在线观看一级 | 久久久久亚洲国产 | 日韩成人免费在线 | 成人a在线观看 | 国产精品女人网站 | 久久精品中文字幕 | 国产成人亚洲精品自产在线 | 中文字幕亚洲国产 | 久久综合给合久久狠狠色 | 日韩欧美高清一区二区三区 | 国产字幕在线播放 | 欧美日韩国产网站 | 久久久国产电影 | 韩国av不卡 | 国产又粗又猛又爽又黄的视频免费 | 精品9999| 久热av| 亚洲尺码电影av久久 | 久久国产精品久久精品国产演员表 | av免费电影在线观看 | 日日天天av | 国产精品1024| 日本性xxxxx 亚洲精品午夜久久久 | 国产精品视屏 | 免费h在线观看 | 日韩在线视频不卡 | 一区二区电影在线观看 | 国产婷婷色 | 一区二区三区在线电影 | 欧美一级久久 | 深夜免费福利 | 人人玩人人添人人澡97 | 国内精品久久久 | 在线小视频 | 日韩精品一区在线播放 | 成人av在线亚洲 | 91精品第一页 | 在线观看中文字幕亚洲 | 天天爽人人爽 | 久久在现视频 | 一区二区三区四区在线免费观看 | 激情欧美日韩一区二区 | 尤物97国产精品久久精品国产 | 久久久久亚洲精品成人网小说 | 日本巨乳在线 | 久久精品4| 久久在草 | 日韩国产高清在线 | 九九热1 | 一区 二区 精品 | 日韩欧美视频免费在线观看 | 精品在线观看视频 | 亚州激情视频 | 日韩欧美综合在线视频 | 日韩性xxx| 91爱爱中文字幕 | 美女免费黄网站 | 免费在线91 | 免费观看黄 | 97超级碰碰碰视频在线观看 | 91久色蝌蚪 | 天天色天天操天天爽 | 免费看色网站 | 99久e精品热线免费 99国产精品久久久久久久久久 | 99这里只有精品视频 | 波多野结衣在线播放视频 | 国产手机视频在线观看 | 国产 亚洲 欧美 在线 | 国产视频九色蝌蚪 | 免费三级在线 | 久久久久蜜桃 | 在线成人性视频 | 日韩欧美综合在线视频 | 国内久久久 | 国产日韩精品一区二区三区 | 国产精品久久久久影院 | 99在线精品视频在线观看 | 日韩三级视频在线观看 | 人人干人人爽 | 精品你懂的| 久久污视频 | 粉嫩一二三区 | 天天草天天爽 | 中文字幕在线影视资源 | 午夜精品久久久久久 | 九九视频这里只有精品 | 97人人模人人爽人人少妇 | 三级在线国产 | 亚洲精品视频免费在线 | 91精品国产乱码久久桃 | 狠狠色丁香婷婷综合久小说久 | 二区三区中文字幕 | 色婷婷视频在线观看 | 国产又黄又猛又粗 | 久久久精品电影 | 日韩视频一区二区三区 | 日韩精品无码一区二区三区 | 国产欧美在线一区二区三区 | 欧美日韩成人一区 | 最近免费中文字幕mv在线视频3 | 91激情在线视频 | 国产精品视频最多的网站 | 国产私拍在线 | 久久综合色播五月 | 国产99久久精品一区二区300 | 黄色动态图xx | 九九精品毛片 | 激情丁香综合 | 亚洲免费专区 | 色婷婷一| 国产一区二区在线播放视频 | 91九色精品女同系列 | aaa日本高清在线播放免费观看 | 97碰碰碰| 97看片| 你操综合 | 色av资源网| 在线观看视频中文字幕 | 在线精品亚洲一区二区 | 国产色视频一区二区三区qq号 | 欧美在线久久 | 99爱精品在线 | 国产精品手机视频 | 在线一二三四区 | 免费视频久久久久 | 免费观看国产视频 | 欧美日韩一区二区在线观看 | 亚洲激情国产精品 | 色五婷婷 | 婷婷丁香综合 | 日本中文字幕在线一区 | 国产成人综合精品 | 久久美女视频 | 精品久久久久久综合 | 中文字幕视频免费观看 | 手机看片| 在线观看一区 | 99欧美视频| 日韩欧美视频 | 激情五月在线观看 | 麻花豆传媒一二三产区 | 久久久久久久久久久久久影院 | 在线免费亚洲 | 一级国产视频 | .精品久久久麻豆国产精品 亚洲va欧美 | 丁香六月av | 中文字幕亚洲欧美 | 欧美国产日韩一区二区三区 | 免费观看www7722午夜电影 | 色99色| 日本精品视频免费 | av丝袜美腿 | 日韩中文字幕免费在线观看 | 欧美精品免费在线 | 免费av黄色 | 香蕉网在线 | 久久久久亚洲精品男人的天堂 | 国产 一区二区三区 在线 | 国产欧美日韩精品一区二区免费 | 国产午夜在线观看视频 | 久亚洲精品| 精品福利在线观看 | 成人蜜桃网 | 欧美精品久久久久久久久免 | 国产片免费在线观看视频 | 在线观看一级视频 | 丁香花在线观看视频在线 | 国产 在线 日韩 | 日韩欧美视频 | 日日夜夜综合网 | av电影一区二区 | 亚洲免费成人av电影 | 亚州激情视频 | 亚洲美女久久 | 国产精品久久久久久久婷婷 | 中文字幕国产一区 | 97精品国产97久久久久久春色 | 91在线免费视频观看 | 成 人 黄 色 视频免费播放 | 欧美在线不卡一区 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 青青草在久久免费久久免费 | 欧美视频二区 | 免费精品国产va自在自线 | av黄免费看 | 特级西西人体444是什么意思 | 91视频午夜 | 五月天久久精品 | 人人搞人人爽 | 久久国产精品成人免费浪潮 | 日韩成人精品一区二区 | 久久中文字幕在线视频 | 综合久久影院 | 久久久亚洲成人 | 久久免费视频在线观看6 | 久久精品视频18 | 日日婷婷夜日日天干 | 高清免费av在线 | 欧美调教网站 | 国产淫片免费看 | 99精品免费久久久久久久久 | 免费视频 三区 | 在线观看91 | 婷婷去俺也去六月色 | 日韩欧美视频二区 | 亚洲欧美日韩中文在线 | 男女啪啪视屏 | 天天操天天曰 | 丰满少妇在线观看网站 | 菠萝菠萝在线精品视频 | 成人小视频在线 | 久久综合免费 | 欧美在一区 | 欧洲精品在线视频 | 久久免费视频一区 | 免费成视频 | 国产成本人视频在线观看 | 中文字幕在线观看的网站 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 美女av电影 | 亚洲无吗视频在线 | 婷婷精品国产欧美精品亚洲人人爽 | 国产成人高清 | 欧美做受高潮电影o | 日本电影黄色 | 亚洲精品国偷拍自产在线观看蜜桃 | 99视频精品免费观看, | 亚洲成人免费在线 | 久久欧美在线电影 | www.天天草 | 久草国产在线 | 韩国三级在线一区 | 久热色超碰 | 东方av免费在线观看 | 日日夜夜精品免费观看 | 亚洲一区精品二人人爽久久 | 99热在线免费观看 | 欧美性色综合网站 | 狠狠操操操 | 亚洲成人午夜在线 | 久久蜜桃av | 992tv在线成人免费观看 | 超碰在线观看99 | 免费三级黄色片 | 婷婷久久国产 | 97电院网手机版 | 黄色小网站在线 | 国产99re| 国产91对白在线 | 久久国产精品99国产精 | 伊人国产在线观看 | 日韩激情久久 | 国产视频1| 亚洲人久久 | 天天舔天天射天天操 | 久色网 | 麻豆成人精品 | 午夜成人免费影院 | 国产另类xxxxhd高清 | 热九九精品 | 久久久电影网站 | 色在线国产 | 国产原创av在线 | 精品久久久久亚洲 | 手机av在线免费观看 | 国产小视频在线观看免费 | 日本免费一二三区 | 天天天操操操 | 亚洲国产成人精品久久 | 东方av免费在线观看 | 99re久久资源最新地址 | 日本在线观看中文字幕 | 中文在线资源 | 国产69久久精品成人看 | jizzjizzjizz亚洲| www.神马久久| 欧美精品免费在线观看 | 黄色在线观看网站 | 国产香蕉视频 | 国产特级毛片aaaaaaa高清 | 日韩美视频 | 在线播放精品一区二区三区 | 欧美精品v国产精品 | 1000部国产精品成人观看 | 日韩午夜视频在线观看 | 在线看黄网站 | 亚洲国产小视频在线观看 | 天天色综合1| 国产精品自拍在线 | 美女久久久久久久久久久 | 国产在线观看免费观看 | 国产成人综| 日韩在线观看a | 午夜精品一二区 | 伊人亚洲综合网 | 在线观看你懂的网址 | 国产特级毛片aaaaaa毛片 | 天天干,天天射,天天操,天天摸 | 国产日产精品一区二区三区四区的观看方式 | av解说在线观看 | 中文在线字幕免费观看 | 国产福利免费看 | 国产不卡毛片 | 97电影手机版 | 国产原创在线观看 | 中文字幕高清视频 | 福利二区视频 | 亚洲精选在线观看 | 99久久www| 久久久精品影视 | 亚洲国产资源 | 在线观看香蕉视频 | av解说在线| 欧美国产日韩久久 | 亚洲色图美腿丝袜 | 久久高视频 | 欧美 另类 交 | 色婷婷综合视频在线观看 | 成人免费网视频 | 91字幕| 久久国产精品电影 | 91热精品| 精品久久久久久久久久久久久 | 午夜电影久久久 | 国产精品视频全国免费观看 | 亚洲国产高清在线 | www.天天成人国产电影 | 最近字幕在线观看第一季 | 亚洲国产av精品毛片鲁大师 | 国内免费久久久久久久久久久 | 黄色成人小视频 | 亚洲欧洲国产日韩精品 | 亚洲一区二区三区在线看 | 中文字幕日韩免费视频 | 中文字幕在线观看第三页 | 欧美日韩一区二区视频在线观看 | 射射色| 中文字幕色综合网 | 日本aaa在线观看 | 激情视频91| 18pao国产成视频永久免费 | 探花视频在线版播放免费观看 | 97成人资源站 | 久草视频免费观 | 色香蕉网 | 天堂av免费观看 | 午夜视频亚洲 | 激情五月激情综合网 | 日日夜夜人人精品 | 另类老妇性bbwbbw高清 | 黄色三级久久 | 亚洲成人av一区二区 | 中文字幕色在线 | 成人久久国产 | 精品爱爱 | 手机av在线网站 | 国产乱对白刺激视频在线观看女王 | 欧美成人播放 | 手机看国产毛片 | 亚洲精品国产第一综合99久久 | 久久精品久久精品久久精品 | 超碰成人av | 久久久久久久久久久久久9999 | 日本精品久久久久久 | 国产在线视频一区二区三区 | 99这里有精品 | 99久久精品无码一区二区毛片 | 国产黄色免费看 | 日韩亚洲在线 | 中文字幕色在线视频 | 91九色视频 | 日韩三级视频在线观看 | 在线看成人片 | 成人观看 | 人人舔人人舔 | 97视频免费观看 | 激情网色 | 99在线高清视频在线播放 | 大胆欧美gogo免费视频一二区 | 激情欧美一区二区三区免费看 | 日韩高清成人在线 | 午夜视频一区二区三区 | 亚洲天堂免费视频 | 久久尤物电影视频在线观看 | www.久久色| 干av在线| 激情五月av| 国产视频1 | 精品国产一区二区三区av性色 | 久草免费手机视频 | 国产亚洲人成网站在线观看 | 精品1区2区3区 | 高清av在线免费观看 | 久久久久久国产精品 | 国产一级视频免费看 | 精品国产一区二区三区av性色 | 麻豆成人网 | 永久av免费在线观看 | 成年人视频在线免费播放 | 成人在线免费视频观看 | 久久久久久久久久免费 | 欧美大香线蕉线伊人久久 | 91一区在线观看 | 日本高清久久久 | 五月天婷婷丁香花 | 日韩理论 | 999亚洲国产996395 | 中文字幕韩在线第一页 | av怡红院| ww亚洲ww亚在线观看 | 成人在线网站观看 | 一区二区三区在线免费观看视频 | 麻豆一级视频 | 91色亚洲 | 一区二区中文字幕在线观看 | 免费在线观看污 | av最新资源| 亚洲精品视频在线免费播放 | 亚洲第一伊人 | 超碰97国产精品人人cao | 99久久精品国产一区二区三区 | 制服丝袜亚洲 | 四虎www com | 热久久影视 | 亚洲欧美日韩不卡 | 麻豆一区二区 | 人人插人人草 | 最近最新中文字幕 | 综合网天天 | 91人人人 | 人人插人人 | 97看片网 | 天天草天天 | 日本最新一区二区三区 | 特黄特黄的视频 | 中文字幕在线影视资源 | 亚洲欧美日韩一级 | 国产亚洲精品久久久久久大师 | 狠狠色丁香久久婷婷综合_中 | 91| 国产中文字幕在线视频 | 色视频成人在线观看免 | 中文字幕国语官网在线视频 | 欧美日韩高清一区 | 最新色视频 | 亚洲天天看 | 国产成人精品一区二区三区福利 | 色偷偷88888欧美精品久久久 | 亚洲欧美日本一区二区三区 | 在线精品视频免费观看 | 一区二区三区视频在线 | 黄色小说免费观看 | 超碰人人国产 | 色婷在线 | 久久免费99 | 国产一级91 | 粉嫩av一区二区三区入口 | 久久伊人爱 | 精品国产理论片 | 日韩成年视频 | 欧美91av| 黄色av成人在线 | 国产丝袜美腿在线 | www.大网伊人 | 四虎成人免费影院 | 91麻豆精品国产自产 | 日本久草电影 | 欧美日韩精品综合 | 日韩,精品电影 | 亚洲高清视频在线播放 | 久久久久久亚洲精品 | 欧洲亚洲国产视频 | 国产高清免费观看 | 麻豆视频免费在线播放 | 色综合天天色综合 | 国产麻豆视频免费观看 | 天天干视频在线 | 久草视频免费 | 天天射天天干天天 | 亚洲精品乱码久久久久久久久久 | 欧美性黄网官网 | 黄色亚洲大片免费在线观看 | 激情 一区二区 | 国产专区视频 | 欧美va在线观看 | 97精品电影院 | 伊人手机在线 | 国产精品1区2区3区在线观看 | 日韩av网址在线 | 亚洲视频2| 欧美日韩大片在线观看 | 九九交易行官网 | 五月天久久 | 国产精品18久久久久vr手机版特色 | 国产小视频你懂的在线 | 狠狠狠色丁香综合久久天下网 | 国产精品麻豆三级一区视频 | 中文日韩在线视频 | 精品国产诱惑 | 国产一区二区三区久久久 | 亚洲精品中文字幕在线观看 | 日韩高清在线一区二区 | 激情视频一区二区 | 中国美女一级看片 | 高清国产一区 | 国产成人精品免高潮在线观看 | 久草爱 | 久久免费黄色大片 | 日韩av成人在线观看 | 99久久99热这里只有精品 | www.久久色 | 少妇性bbb搡bbb爽爽爽欧美 | 五月婷婷一级片 | 国产色视频一区二区三区qq号 | 天天干天天搞天天射 | 欧美精品免费在线 | 国产精品久久久久国产精品日日 | 色天天综合久久久久综合片 | 亚洲va天堂va欧美ⅴa在线 | 国产精品久久久久久影院 | 久久综合色一综合色88 | 国产精品第10页 | 日本成人黄色片 | 日韩免费看 | 天天干天天操天天射 | 成人91在线观看 | 在线不卡中文字幕播放 | 六月激情丁香 | 国语精品免费视频 | 亚洲精品美女视频 | 国产精品少妇 | 五月天激情婷婷 | av中文字幕网 | 免费在线播放黄色 | www.夜夜操 | 国产成人久久av977小说 | 丁香国产视频 | 亚洲va天堂va欧美ⅴa在线 | 九九在线国产视频 | 国产成人精品av久久 | 人人干人人做 | 国产精品久久久久久a | 激情丁香综合 | 五月婷色| 国产精品网在线观看 | 国产五月色婷婷六月丁香视频 | 久久99精品国产麻豆婷婷 | 欧美大jb| 欧美激情视频一区二区三区 | 91av在线视频免费观看 | 在线观看完整版 | 99精品欧美一区二区三区黑人哦 | 欧美怡红院 | 二区三区在线观看 | 狠狠操欧美 | www黄色com | 色综合天| 色中文字幕在线观看 | 日韩中文字幕亚洲一区二区va在线 | 激情视频国产 | 91视视频在线直接观看在线看网页在线看 | 午夜免费福利视频 | 成人电影毛片 | 深夜成人av| 四虎成人免费观看 | 精品福利视频在线观看 | 美女视频网 | 又黄又爽免费视频 | 午夜丁香视频在线观看 | 四虎国产精品成人免费影视 | 国产一二三在线视频 | 国产三级精品三级在线观看 | 亚洲精色 | 久草在线资源免费 | 97夜夜澡人人双人人人喊 | 91日本在线播放 | 久久999久久| 丁香婷婷色综合亚洲电影 | 色婷婷88av视频一二三区 | 一级片免费视频 | 国产视频精选 | 日韩a在线观看 | 91视频久久久| 在线观看深夜福利 | 99re在线视频观看 | www.色午夜.com | 成人在线免费av | 亚洲精品在线观看网站 | 欧美视频在线观看免费网址 | 激情小说久久 | 黄av免费在线观看 | 久久av免费观看 | 热久久免费视频精品 | 18国产精品福利片久久婷 | 美女网站黄免费 | 97视频人人免费看 | 色播六月天 | 免费高清av在线看 | 天天av天天 | 97色资源| 高清一区二区三区 | 国产一区二区三区高清播放 | 亚洲精品乱码久久久久久蜜桃不爽 | 99精品视频在线看 | 婷婷久久亚洲 | 在线观看日本高清mv视频 | 亚洲精品在线视频网站 | 日韩欧美视频免费在线观看 | 亚洲女人天堂成人av在线 | 成年人在线免费看视频 | 日日夜夜人人精品 | 在线岛国av | 亚洲视频免费视频 | 午夜黄色大片 | 久久国产综合视频 | 久久全国免费视频 | 香蕉影院在线观看 | 天天综合操 | 96久久| 欧美精品午夜 | 免费开视频 | 久久99影院 | 999亚洲国产996395 | 黄色av网站在线观看 | 一区二区三区免费在线观看视频 | 在线成人免费电影 | 欧美激情视频一区 | 亚洲人在线 | 一区二区三区免费看 | 99视频国产精品免费观看 | 亚洲精品影视在线观看 | 又黄又爽又色无遮挡免费 | 一区电影 | 天天干天天天 | 免费a视频 | 国产婷婷一区二区 | 一级黄色大片在线观看 | h久久| 天天色综合三 | 国产精品久久久久久影院 | 精品极品在线 | 中文乱码视频在线观看 | 色视频网页 | 在线观看av网 | 天天操偷偷干 | 精品国产福利在线 | 亚洲欧洲精品一区二区 | 丰满少妇久久久 | 黄色网中文字幕 | 麻豆视频在线播放 | 久久免费视频一区 | 中文字幕在线视频第一页 | 在线国产一区二区三区 | 亚洲成人资源在线观看 | 亚洲h在线播放在线观看h | 成年人视频在线免费观看 | 中文高清av | 一本一道波多野毛片中文在线 | 综合色影院 | 999久久国产| 首页中文字幕 | 偷拍精品一区二区三区 | 手机av观看 | 中文字幕av日韩 | 久久成人亚洲欧美电影 | 日操操 | 色就是色综合 | 欧美成年网站 | 毛片区 | 国产成人a v电影 | 国产日韩精品一区二区在线观看播放 | 在线免费观看国产视频 | 在线观看mv的中文字幕网站 | 婷婷激情综合 | 在线看片中文字幕 | 成人精品视频久久久久 | 国产污视频在线观看 | 婷婷亚洲综合五月天小说 | 成人h视频 | 一二三久久久 | 国产精品毛片一区视频播不卡 | 91豆花在线观看 | 国产一区二区三精品久久久无广告 | 久久免费视频在线 | 成人在线视频观看 | 久久欧美综合 | 射综合网 | 国产黄色在线网站 | 四虎影视精品永久在线观看 | 五月天丁香亚洲 | 国产日韩欧美视频在线观看 | 国产亚洲视频中文字幕视频 | 国产精品视频在线观看 | 久久久性 | 免费a视频 | 黄色在线免费观看网站 | www.伊人网 | 午夜精品久久 | 亚洲精品一区二区久 | 欧美日韩精品在线观看视频 | av在线播放一区二区三区 | 在线播放一区二区三区 | 国产精品久久久久永久免费看 | 欧美日产一区 | 麻豆高清免费国产一区 | 99视频精品免费观看, | 欧美999 | 在线观看日本韩国电影 | 香蕉视频亚洲 | 波多野结衣综合网 | 精品在线免费视频 | 国产精品久久久久久久久久新婚 | 深夜免费福利在线 | 婷香五月| 天天综合导航 | 久草精品视频在线看网站免费 | 中文字幕日韩一区二区三区不卡 | 夜夜骑天天操 | 欧美日韩综合在线观看 | 成人小视频在线观看免费 | 欧美午夜精品久久久久久孕妇 | 色视频在线观看 | 狠狠狠狠狠狠狠狠干 | 在线观看日韩中文字幕 | a天堂在线看 | 国产精品人成电影在线观看 | 国产在线视频导航 | 国产性天天综合网 | 精品一区av | 久草精品在线播放 | 久久久久伊人 | 中文字幕视频 | 欧美激情综合色 | 色丁香婷婷| 久草97| 久草精品视频 | 国产亚洲精品无 | 精品理论片 | 亚洲永久精品视频 | 在线视频18在线视频4k | 国产一区免费在线观看 | 久久综合九色综合97_ 久久久 | 玖玖视频国产 | 天天拍天天干 | 国产成人免费网站 | 国产精品毛片久久久久久 | 欧美人体xx | 婷婷激情五月综合 | 91插插影库 | 四虎8848免费高清在线观看 | 欧美日韩色婷婷 | 一区二区三区国产欧美 | 亚洲国产高清在线 | 亚洲一区天堂 | 亚洲黄色软件 | 黄色免费观看网址 | 国产亚洲aⅴaaaaaa毛片 | 五月婷婷网站 | 久久国产精品成人免费浪潮 | 97在线免费视频 | 亚洲欧美一区二区三区孕妇写真 | 男女激情片在线观看 | 亚洲国产成人在线 | 97电影网站 | 精品国产激情 | 亚洲美女在线国产 | 91亚洲精品国偷拍 | 久久五月激情 | 亚洲精品久久在线 | 亚洲精品456在线播放乱码 | 综合网五月天 | 久久伊人五月天 | 欧美日韩精品在线观看视频 | 国产在线免费 | 99热精品国产一区二区在线观看 | 日日精品 | 久久精品91久久久久久再现 | 国产一区二区精 |