嘔心瀝血:文本處理三劍客之AWK

AWK的基本格式:

awk [options] 'program' file…
注釋:
program->pattern{action statements;..}
pattern和action:
pattern部分決定動作語句何時觸發(fā)及觸發(fā)事件
(BEGIN,END)
action statements對數據進行處理危队,放在{}內指明
(print, printf)

awk工作原理:

第一步:執(zhí)行BEGIN{action;… }語句塊中的語句

第二步:從文件或標準輸入(stdin)讀取一行鲤嫡,然后執(zhí)行pattern{ action;… }語句塊,它逐行掃描文件千元,從第一行到最后一行重復這個過程,直到文件全部被讀取完畢颤绕。

第三步:當讀至輸入流末尾時幸海,執(zhí)行END{action;…}語句塊

注意:pattern語句塊中的通用命令是最重要的部分,也是可選的奥务。如果沒有提供pattern語句塊物独,則默認執(zhí)行{ print },即打印每一個讀取到的行氯葬,awk讀取的每一行都會執(zhí)行該語句塊

awk [options] 'program' file…
program->pattern{action statements;..}
pattern和action:
pattern部分決定動作語句何時觸發(fā)及觸發(fā)事件
(BEGIN,END)
action statements對數據進行處理挡篓,放在{}內指明
(print, printf)
注意:awk程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊官研,共3部分組成秽澳。BEGIN語句塊和END語句塊分別為文家處理前和處理后執(zhí)行的語句段

1)OPTIONS

選項(options):

-F指明輸入時用到的字段分隔符(默認以空格為分隔符)
-v var內置變量|var=value: 自定義變量

變量分為內置變量和自定義變量:

內置變量:

  • FS:輸入字段分隔符,默認為空白字符(與-F效果相同)
[root@dashui ~]# awk -v FS=":" '{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
  • OFS:輸出字段分隔符戏羽,默認為空白字符
[root@dashui ~]# awk -v FS=":" -v OFS="*" '{print $1,$3}' /etc/passwd
root*0
bin*1
daemon*2
  • RS:輸入記錄分隔符担神,指定讀入時的換行符,原換行符仍有效
[root@dashui ~]# awk -v RS=' '  '{print}' hah    //指定讀入時的分割符始花,只要出現(xiàn)空格就被換行
nihao
a
haha
i
amfanin

[root@dashui ~]# cat hah 
nihao a haha
i amfanin
  • ORS:輸出記錄分隔符妄讯,輸出時用指定符號代替換行符
[root@dashui ~]# cat hah 
nihao a haha
i amfanin
[root@dashui ~]# awk -v ORS='=== '  '{print}' hah     //指定輸出分隔符為===,所以原來換行被替換成===
nihao a haha=== i amfanin=== [root@dashui ~]#
  • NF:字段數量
[root@dashui ~]# awk -F: '{print NF}' /etc/passwd    //以:為分隔符酷宵,每一行有幾個字段
7
7
7
  • NR:行號(如果有多個文件捞挥,則行號統(tǒng)計在一起)
[root@dashui ~]# awk '{print NR}' hah
1
2
[root@dashui ~]# awk '{print NR}' hah /etc/fstab       //hah的行號和/etc/fstab的統(tǒng)計在了一塊   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • FNR:各文件分別計數,行號
[root@dashui ~]# awk '{print FNR}' hah /etc/fstab 
1
2
1
2
3
4
5
6
7
8
9
10
11
12
FILENAME:當前文件名

[root@dashui ~]# awk '{print FILENAME}' hah //因為前面的pattern沒有寫,所以默認每讀入一行忧吟,就執(zhí)行一次print
hah
hah
[root@dashui ~]# cat hah 
nihao a haha
i amfanin
  • ARGC:命令行參數的個數
[root@dashui ~]# awk '{print ARGC}' hah     //其中第一個參數為awk 砌函,第二個為 hah
2
2
  • ARGV:數組,保存的是命令行所給定的各參數
[root@dashui ~]# awk '{print ARGV[0]}' hah     //0是第一個參數溜族,1是第二個參數
awk
awk
[root@dashui ~]# awk '{print ARGV[1]}' hah 
hah
hah
  • 自定義變量

    (1) -v var=value
    變量名區(qū)分字符大小寫
    (2) 在program中直接定義

[root@dashui ~]# awk -v name=xiaoshui 'BEGIN{print name}'
xiaoshui
[root@dashui ~]# awk 'BEGIN{name="xiaozhao";print name}'
xiaozhao

    注意:自定義變量時需要加上雙引號讹俊,不加的話可能會定義不成功,如下

[root@dashui ~]# awk 'BEGIN{name=xiaozhao;print name}'

[root@dashui ~]# awk 'BEGIN{name="xiaozhao";print name}'
xiaozhao

2)program

program分為pattern和action

pattern部分決定動作語句何時觸發(fā)及觸發(fā)事件
(BEGIN,END)
action statements對數據進行處理煌抒,放在{}內指明
(print, printf)
(1)action(print仍劈、printf)

Expressions:算術,比較表達式等
Control statements:if, while等
Compound statements:組合語句
input statements
output statements:print等

print

print格式:print item1, item2, ...

(1) 逗號分隔符
(2) 輸出的各item可以字符串寡壮,也可以是數值贩疙;當前記錄的字段、變量或awk的表達式
(3) 如省略item况既,相當于print $0

[root@dashui ~]# awk -F : '{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
[root@dashui ~]# awk -F : '{print $1,"xiaoshui",$3}' /etc/passwd
root xiaoshui 0
bin xiaoshui 1
daemon xiaoshui 2
[root@dashui ~]# awk -F : '{print }' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
  • printf

格式化輸出:printf“FORMAT”, item1, item2, ...
(1) 必須指定FORMAT
(2) 不會自動換行这溅,需要顯式給出換行控制符,\n
(3) FORMAT中需要分別為后面每個item指定格式符

格式符:與item一一對應

%c: 顯示字符的ASCII碼
%d, %i: 顯示十進制整數
%e, %E:顯示科學計數法數值
%f:顯示為浮點數
%g, %G:以科學計數法或浮點形式顯示數值
%s:顯示字符串
%u:無符號整數
%%: 顯示%自身

修飾符:

#[.#]:第一個數字控制顯示的寬度棒仍;第二個#表示小數點后精度悲靴,%3.1f
-: 左對齊(默認右對齊)%-15s
+:顯示數值的正負符號%+d
[root@dashui ~]# awk -F : '{printf "%s %d\n",$1,$3 }' /etc/passwd    //如果不加\n默認是不換行的
root 0
bin 1
daemon 2

(2)pattern

  • PATTERN:根據pattern條件,過濾匹配的行莫其,再做處理

(1)如果未指定:空模式癞尚,匹配每一行
(2) /regular expression/:僅處理能夠模式匹配到的行,需要用/ /括起來

[root@dashui ~]# awk '/^UUID/{print $1}' /etc/fstab // 以UUID開頭的行
UUID=136f7cbb-d8f6-439b-aa73-3958bd33b05f
UUID=bf3d4b2f-4629-4fd7-8d70-a21302111564
UUID=cbf33183-93bf-4b4f-81c0-ea6ae91cd4f6
UUID=5e11b173-f7e2-4994-95b9-55cc4c41f20b
  • relational expression: 關系表達式乱陡,結果有“真”有“假”浇揩,結果為“真”才會被處理

真:結果為非0值,非空字符串
假:結果為空字符串或0值

[root@dashui ~]# awk '0{print $0}' hah    //因為前面為0憨颠,所以不執(zhí)行
[root@dashui ~]# awk '!0{print $0}' hah    //與上面相反
nihao a haha
i amfanin
[root@dashui ~]# awk -F: '$3==0{print $0}' /etc/passwd    //只有當$3=0時候胳徽,才會執(zhí)行print
root:x:0:0:root:/root:/bin/bash
  • (4) line ranges:行范圍

startline,endline:/pat1/,/pat2/不支持直接給出數字格式

[root@dashui ~]# awk -F: '/^root\>/,/^daemon\>/{print}' /etc/passwd    //打印以root開頭與以daemon開頭的之間的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@dashui ~]#
  • (5)(5) BEGIN/END模式

BEGIN{}: 僅在開始處理文件中的文本之前執(zhí)行一次
END{}:僅在文本處理完成之后執(zhí)行一次

[root@dashui ~]# awk 'BEGIN{print "start"}{print $0}END{print "end"}' hah    //在開始和結束時候分別打印start和end
start
nihao a haha
i amfanin
end
[root@dashui ~]# cat hah
nihao a haha
i amfanin


AWK的操作符

  • 算術操作符:

x+y, x-y, x*y, x/y, x^y, x%y
-x: 轉換為負數
+x: 轉換為數值

[root@dashui ~]# awk 'BEGIN{i=1;j=2;sum=i+j;{print sum}}'    
3
  • 字符串操作符:沒有符號的操作符,字符串連接

賦值操作符:
=, +=, -=, *=, /=, %=, ^=
++, --
比較操作符:
, >=, <, <=, !=, ==
模式匹配符:
~:左邊是否和右邊匹配包含
!~:是否不匹配

[root@dashui ~]# awk -F: '$1~"root"{print $0}' /etc/passwd    //當$1即usrename為root或者包含 root時候,執(zhí)行print
root:x:0:0:root:/root:/bin/bash
chroot:x:1003:1003:,62984566:/home/chroot:/bin/bash
rooter:x:3320:4327:,62984566:/home/rooter:/bin/bash
[root@dashui ~]# awk -F: '$3<2{print $0}' /etc/passwd    //$3即uid小于2時膜廊,執(zhí)行print
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
  • 邏輯操作符:與&&乏沸,或||,非!
[root@dashui ~]# awk -F: '$3>1000 && $3<2000{print $0}' /etc/passwd
xiaoshui:x:1001:1001:xiaoshui,342342342:/home/xiaoshui:/bin/bash
chroot:x:1003:1003:,62984566:/home/chroot:/bin/bash
centos:x:1004:1004:,62984566:/home/centos:/bin/bash
[root@dashui ~]# awk -F: '$1=="root" || $1=="xiaoshui"{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
xiaoshui:x:1001:1001:xiaoshui,342342342:/home/xiaoshui:/bin/bash
  • awk控制語句

●{ statements;… } 組合語句
●if(condition) {statements;…}
●if(condition) {statements;…} else {statements;…}
●while(conditon) {statments;…}
●do {statements;…} while(condition)
●for(expr1;expr2;expr3) {statements;…}
●break
●continue
●delete array[index]
●delete array
●exit

  • (1){ statements;… } 組合語句
[root@dashui ~]# awk '{a=1;print a}' hah    //將多個語句組合在一起
1
1
  • (2)●if(condition) {statements;…}
[root@dashui ~]# awk -F: '{if($3==0){print $0}}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
**注意:條件在小括號中爪瓜,條件后的語句需在{ }中**
  • (3)●if(condition) {statements;…} else {statements;…}

    ● if(condition1){statement1}else if(condition2){statement2}else{statement3}

[root@dashui ~]# awk '{if($0=="dashui"){print "dashui"} else{print "not dashui"}}' hah
not dashui
not dashui
dashui
[root@dashui ~]# cat hah
nihao a haha
i amfanin
dashui
  • (4)●while(conditon) {statments;…}
//下面是找到以空格開頭后跟linux16的行蹬跃,將匹配到的行中的每個字段的長度與8比較,大于8的輸出
[root@dashui ~]# awk '/^[[:space:]]+linux16/{i=1;while(i<=NF){if(length($i)>8){print $i,length($i)};i++}}' /etc/grub2.cfg 
/vmlinuz-3.10.0-327.el7.x86_64 30
root=UUID=136f7cbb-d8f6-439b-aa73-3958bd33b05f 46
net.ifnames=0 13
/vmlinuz-0-rescue-3f3be6c44d1047a8b32f91efd2f2c5ab 50
root=UUID=136f7cbb-d8f6-439b-aa73-3958bd33b05f 46
net.ifnames=0 13
    做上面的實驗時铆铆,因為手抖輸出了點蝶缀,將if后面的print中i前面的$符號給忘記了,結果就成了下面的情況

[root@dashui ~]# awk '/^[[:space:]]+linux16/{i=1;while(i<=NF){if(length($i)>8){print i,length(i)};i++}}' /etc/grub2.cfg 
2 1
3 1
7 1
2 1
3 1
7 1

//分析:print i薄货,因為前面i賦值的是數字翁都,本意是想打印i,即各個字段谅猾,當符號丟掉時柄慰,i也只是代表數字了
所以打印出來的237237表示的就是第幾個字段,而length(i)就更好理解了税娜,因為length()就是求括號中的
字符串的長度坐搔,且因為i都為個位數,所以就為1嘍(注意:如果單單是length(i)敬矩,i之前沒有被定義概行,此時打印出來
的為0,以為i之前沒有被定義弧岳,所以為空)

  • (5)do-while循環(huán)

語法:do {statement;…}while(condition)
意義:無論真假凳忙,至少執(zhí)行一次循環(huán)體

[root@dashui ~]# awk 'BEGIN{i=0;do{i++}while(i<1){print i}}'
1
[root@dashui ~]# awk 'BEGIN{i=0;do{i++}while(i<=1){print i}}'
2
  • (6)for循環(huán)

語法:for(expr1;expr2;expr3) {statement;…}

[root@dashui ~]# awk '/^[[:space:]]+linux16/{for(i=1;i<NF;i++){print $i}}' /etc/grub2.cfg 
linux16
/vmlinuz-3.10.0-327.el7.x86_64
root=UUID=136f7cbb-d8f6-439b-aa73-3958bd33b05f
ro
rhgb
quiet
linux16
/vmlinuz-0-rescue-3f3be6c44d1047a8b32f91efd2f2c5ab
root=UUID=136f7cbb-d8f6-439b-aa73-3958bd33b05f
ro
rhgb
quiet
特殊用法:能夠遍歷數組中的元素;
語法:for(varin array) {for-body}

[root@dashui ~]# awk -F: '{bash[$7]++}END{for (i in bash){print i,bash[i]}}' /etc/passwd
/etc/nologin 2
/bin/sync 1
/bin/bash 47
/shell/csh 1
/sbin/nologin 34
/sbin/halt 1
/bin/csh 2
/sbin/shutdown 1
[root@dashui ~]#
  • (7)switch語句

語法:switch(expression) {case VALUE1 or /REGEXP/: statement; case VALUE2 or /REGEXP2/: statement; ...; default: statement}

  • (8)break和continue

break表示跳出循環(huán)禽炬,而continue表示跳過本輪循環(huán)

[root@dashui ~]# awk 'BEGIN{sum=0;for(i=1;i<10;i++){if(i==5){break}print i}}'
1
2
3
4
[root@dashui ~]# awk 'BEGIN{sum=0;for(i=1;i<10;i++){if(i==5){continue}print i}}'
1
2
3
4
6
7
8
9
  • (9)next

提前結束對本行處理而直接進入下一行處理(awk自身循環(huán))

#$3%2涧卵!=0即uid為奇數,跳過此行瞎抛,即只打印uid為偶束的行
[root@dashui ~]# awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12

awk數組

關聯(lián)數組:array[index-expression]

index-expression:

(1) 可使用任意字符串艺演;字符串要使用雙引號括起來
(2) 如果某數組元素事先不存在,在引用時桐臊,awk會自動創(chuàng)建此元素,并將其值初始化為“空串”
若要判斷數組中是否存在某元素晓殊,要使用“index in array”格式進行遍歷

注意:如果數組的鍵值為字符串時断凶,最后以雙引號給引起來

[root@dashui ~]# awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]="Tuesday";print weekdays["mon"]}'
Monday
若要遍歷數組中的每個元素,要使用for循環(huán)

[root@dashui ~]# netstat -tan|awk '/^tcp\>/{state[$NF]++}END{for(i in state){print i,state[i]}}'
LISTEN 3
ESTABLISHED 1

awk函數

  • ●數值處理:

rand():返回0和1之間一個隨機數

注意:需配合srand()函數使用巫俺,不然不是隨機數

[root@dashui ~]# awk 'BEGIN{srand(); for (i=1;i<=10;i++)print int(rand()*100)}'
54
45
23
24
14
72
56
92
31
31

  • ●字符串處理:

length([s]):返回指定字符串的長度

sub(r,s,[t]):對t字符串進行搜索r表示的模式匹配的內容认烁,并將第一個匹配的內容替換為s

gsub(r,s,[t]):對t字符串進行搜索r表示的模式匹配的內容,并全部替換為s所表示的內容

[root@dashui ~]# echo "2008:08:08 08:08:08"|awk 'sub(":","-",$0)'
2008-08:08 08:08:08
[root@dashui ~]# echo "2008:08:08 08:08:08"|awk 'gsub(":","-",$0)'
2008-08-08 08-08-08
[root@dashui ~]#

split(s,array,[r]):以r為分隔符,切割字符s却嗡,并將切割后的結果保存至array所表示的數組中舶沛,第一個索引值為1,第二個索引值為2,…

這里使用split函數將第五個字段中的ip和端口號分開,只取出了ip窗价。

[root@dashui ~]# netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}'
10.1.0.82 1
0.0.0.0 3
[root@dashui ~]# netstat -tan 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 10.1.0.26:22            10.1.0.82:54143         ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
[root@dashui ~]#
  • 自定義函數

格式:
function name ( parameter, parameter, ... ) {
statements
return expression
}

這里自定義了一個函數如庭,求出兩個變量的最大值。

[root@dashui ~]# awk -f awk.fun 
3
[root@dashui ~]# cat awk.fun 
function max(v1,v2) {
v1>v2?var=v1:var=v2
return var
}
BEGIN{a=3;b=2;print max(a,b)}
**注意:和之前的shell中的函數有些不同撼港,這里如果需要像awk函數中傳遞變量坪它,則需要在括號中定義形參。**

awk中調用shell命令

  • system命令
[root@dashui ~]# awk BEGIN'{system("hostname")}'
dashui.localdomain

空格是awk中的字符串連接符帝牡,如果system中需要使用awk中的變量可以使用空格分隔往毡,或者說除了awk的變量外其他一律用""引用起來。

[root@dashui ~]# awk 'BEGIN{name="xiaoshui";system("echo your name is " name)}'
your name is xiaoshui

awk腳本

將awk程序寫成腳本靶溜,直接調用或執(zhí)行

將action寫入到腳本中开瞭,然后調用執(zhí)行
[root@dashui ~]# awk -F: -f f1.awk /etc/passwd
root 0
bin 1
daemon 2
adm 3
hu 
[root@dashui ~]# cat f1.awk 
{if($3<4)print $1,$3}
#  腳本文件中的/bin/awk -f表示是用awk -f來執(zhí)行下面語句
[root@dashui ~]# ./f1.awk -F: /etc/passwd
root 0
bin 1
daemon 2
adm 3
hu 
[root@dashui ~]# cat f1.awk 
#!/bin/awk -f
#this is a awk script
{if($3<4)print $1,$3}
  • 向awk腳本傳遞參數

格式:
awkfile var=value var2=value2... Inputfile

# min和max分別對應腳本文件中的min和max
[root@dashui ~]# ./f1.awk -F: min=100 max=200 /etc/passwd
avahi-autoipd 170
abrt 173
rtkit 172
usbmuxd 113
pulse 171
[root@dashui ~]# cat f1.awk 
#!/bin/awk -f
{if($3>=min && $3<=max)print $1,$3}

強化練習

  • 1.打印一個表頭,并且打印用戶名和ID
[root@dashui ~]# awk -F: 'BEGIN{printf "Username           UID\n"}{printf "%-20s %d\n",$1,$3}' /etc/passwd
Username           UID
root                 0
bin                  1
daemon               2
adm                  3
lp                   4
sync                 5
shutdown             6
halt                 7
mail                 8
operator             11
games                12
  • 2.打印一個表頭和表尾罩息,并打印用戶名嗤详,ID,及shell
[root@dashui ~]# awk -F: 'BEGIN{printf "Username           UID     Shell\n"}{printf "%-20s %d %10s\n",$1,$3,$5}END{print "Finished..."}' /etc/passwd

Username           UID     Shell
root                 0       root
bin                  1        bin
daemon               2     daemon
adm                  3        adm
lp                   4         lp
sync                 5       sync
shutdown             6   shutdown
...省略...
haha                 4376           
xixi                 4377           
hehe                 4378           
Finished...
[root@dashui ~]#

  • 3.對文本中的字段進行字符個數統(tǒng)計
[root@dashui ~]# awk '{print $0,length($0)}' hah
nihao a haha 12
i amfanin 9
dashui 6
  • 4.打印字符個數大于等于8的字段
#其實就是比題3多了一條if判斷語句
[root@dashui ~]# awk '{if(length($0)>8){print $0,length($0)}}' hah
nihao a haha 12
i amfanin 9
  • 5.統(tǒng)計系統(tǒng)中shell的類型,并打印shell引用的次數
#中間運用了數組和for循環(huán)
[root@dashui ~]# awk -F: '{count[$7]++}END{for (i in count){print i,count[i]}}' /etc/passwd
/etc/nologin 2
/bin/sync 1
/bin/bash 47
/shell/csh 1
/sbin/nologin 34
/sbin/halt 1
/bin/csh 2
/sbin/shutdown 1
  • 6.統(tǒng)計fstab文件中,各文件系統(tǒng)被引用的次數
#比上題多了一步地址定界
[root@dashui ~]# awk '/^[^#]/{count[$3]++}END{for (i in count){print i,count[i]}}' /etc/fstab 
swap 1
xfs 3
  • 7.統(tǒng)計系統(tǒng)中各TCP連接狀態(tài)的數量
[root@dashui ~]# netstat -tan|awk '/^tcp\>/{state[$6]++}END{for (i in state){print i,state[i]}}'
LISTEN 3
ESTABLISHED 1
  • 8.將文本的重復行去掉
#第一次讀取aaa,arr[aaa]因為沒有定義中燥,所以為空知给,又取非,所以為真,arr[aaa]++是先賦值后加加浅碾,所以第一次打印出來
#第二次,在遇見aaa時候,因為之前有值了arr[aaa]=1舞痰,所以取反為0,不執(zhí)行后的print操作,但是++依然正常運行
[root@dashui ~]# awk '!arr[$0]++' hah
aaa
bbb
ccc
ddd
fff

[root@dashui ~]# cat hah 
aaa
bbb
ccc
aaa
ddd
aaa
aaa
fff
ccc

[root@dashui ~]#

謝謝瀏覽诀姚,以后會不定時更新...

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末响牛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赫段,更是在濱河造成了極大的恐慌呀打,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糯笙,死亡現(xiàn)場離奇詭異贬丛,居然都是意外死亡,警方通過查閱死者的電腦和手機给涕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門豺憔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來额获,“玉大人,你說我怎么就攤上這事恭应〕” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵昼榛,是天一觀的道長境肾。 經常有香客問我,道長褒纲,這世上最難降的妖魔是什么准夷? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮莺掠,結果婚禮上衫嵌,老公的妹妹穿的比我還像新娘。我一直安慰自己彻秆,他們只是感情好楔绞,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唇兑,像睡著了一般酒朵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扎附,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天蔫耽,我揣著相機與錄音,去河邊找鬼留夜。 笑死匙铡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的碍粥。 我是一名探鬼主播鳖眼,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嚼摩!你這毒婦竟也來了钦讳?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤枕面,失蹤者是張志新(化名)和其女友劉穎愿卒,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體潮秘,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡掘猿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了唇跨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稠通。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖买猖,靈堂內的尸體忽然破棺而出改橘,到底是詐尸還是另有隱情,我是刑警寧澤玉控,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布飞主,位于F島的核電站,受9級特大地震影響高诺,放射性物質發(fā)生泄漏碌识。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一虱而、第九天 我趴在偏房一處隱蔽的房頂上張望筏餐。 院中可真熱鬧,春花似錦牡拇、人聲如沸魁瞪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽导俘。三九已至,卻和暖如春剔蹋,著一層夾襖步出監(jiān)牢的瞬間旅薄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工泣崩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留少梁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓律想,卻偏偏與公主長得像猎莲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子技即,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具著洼; 1 什么是aw...
    木林森閱讀 1,785評論 0 16
  • 一,awk簡介 awk,文本處理三劍客之一而叼,它的名稱得自于它的三個創(chuàng)始人Alfred Aho 身笤、Peter Wei...
    千紙鶴V閱讀 2,413評論 0 6
  • awk介紹awk變量printf命令:實現(xiàn)格式化輸出操作符awk patternawk actionawk數組aw...
    哈嘍別樣閱讀 1,567評論 0 4
  • 轉載 原文的排版和內容都更加友好,并且詳細,我只是在這里貼出了一部分留作自己以后參考和學習,如希望更詳細了解AWK...
    XKirk閱讀 3,218評論 2 25
  • 二寶快四歲了,這個年齡的孩子都喜歡聽故事葵陵。昨晚液荸,我在給二寶講睡前故事,這個故事他很熟悉脱篙,所以他開始調皮搗蛋娇钱。我指著...
    比鄰而居閱讀 380評論 1 2