復(fù)習(xí)

復(fù)習(xí)

  • awk 中使用外部shell變量

awk的-v選項(xiàng)用于定義參數(shù),有多少個(gè)變量需要賦值,就需要多少個(gè)-v選項(xiàng)严嗜。
腳本命令如下:

#! /bin/bash
sort -n filename |awk -F ':' '{print $1}'|uniq >id.txt
for id in `cat id.txt`; do
        echo "[$id]"
        awk -v id2=$id -F ':' '$1==id2 {print $2}' filename  // 另外的方式為: awk -F ':' '$1=="'id'" {print $2}' filename  
done

運(yùn)行腳本后顯示如下:

[root@minglinux-01 sbin]# cat filename 
1:aaaaaaaa
2:bbbbbbbbbb
3:cccccc
1:qqqqqqq
2:rrrrrrrr
[root@minglinux-01 sbin]# sh test.sh 
[1]
aaaaaaaa
qqqqqqq
[2]
bbbbbbbbbb
rrrrrrrr
[3]
cccccc
  • awk 合并一個(gè)文件
[root@minglinux-01 ~]# cat 1.txt 
1 a 
2 b
3 c
4 d
[root@minglinux-01 ~]# cat 2.txt 
1 A
2 B 
3 C
4 D
5 E
[root@minglinux-01 ~]# cat 1.txt 2.txt 
1 a 
2 b
3 c
4 d
1 A
2 B 
3 C
4 D
5 E
[root@minglinux-01 ~]# awk '{print NR}' 1.txt 2.txt 
1
2
3
4
5
6
7
8
9
[root@minglinux-01 ~]# awk '{print FNR}' 1.txt 2.txt 
1
2
3
4
1
2
3
4
5
[root@minglinux-01 ~]# awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt 
1 A a
2 B b
3 C c
4 D d
5 E 

上例中NR表示讀取的行數(shù)倒淫, FNR表示讀取的當(dāng)前行數(shù)碉咆,通過(guò)運(yùn)行awk '{print NR,FNR}' 1.txt 2.txt的結(jié)果可以看出抖韩。所以NR==FNR 就表示讀取1.txt的時(shí)候,而 NR>FNR表示讀取2.txt的時(shí)候疫铜。

  • 把一個(gè)文件多行連接成一行

3種方法示例命令如下:

[root@minglinux-01 ~]# cat 3.txt 
a
b
c
d
e
f
[root@minglinux-01 ~]# a=`cat 3.txt`;echo $a
a b c d e f
[root@minglinux-01 ~]# awk '{printf("%s ",$0)}' 3.txt;echo ""    \\%s指定字符串的輸出內(nèi)容格式茂浮,echo "" 的作用是換行。
a b c d e f 
[root@minglinux-01 ~]# cat 3.txt |xargs 
a b c d e f

把3.txt中每行的字母用“+”連接起來(lái):

[root@minglinux-01 ~]# cat 3.txt |xargs|sed 's/ /+/g'
a+b+c+d+e+f
[root@minglinux-01 ~]# awk '{printf("%s+",$0)}' 3.txt;echo""
a+b+c+d+e+f+
  • awk中g(shù)sub函數(shù)的使用

awk 'gsub(/www/,"abc")' /etc/passwd // passwd文件中把所有root替換為abc
awk -F ':' 'gsub(/www/,"abc",$1) {print $0}' /etc/passwd // 替換$1中的root為abc

[root@minglinux-01 ~]# awk 'gsub(/root/,"abc")' /etc/passwd 
abc:x:0:0:abc:/abc:/bin/bash
operator:x:11:0:operator:/abc:/sbin/nologin
[root@minglinux-01 ~]# awk -F ':' 'gsub(/root/,"abc",$1) {print $0}' /etc/passwd
abc x 0 0 root /root /bin/bash
  • awk 截取指定多個(gè)域?yàn)橐恍?/h5>
[root@minglinux-01 ~]# cat test.sh 
#!/bin/bash
for i in `seq 1 7`
do 
 awk -F ':' -v a=$i '{printf $a " "}' /etc/passwd
 echo
done
sh test.sh 
root bin daemon adm lp sync shutdown halt mail operator games ftp nobody systemd-network dbus polkitd sshd postfix ming test10 user11 ntp 
x x x x x x x x x x x x x x x x x x x x x x 
0 1 2 3 4 5 6 7 8 11 12 14 99 192 81 999 74 89 1001 1010 1005 38 
0 1 2 4 7 0 0 0 12 0 100 50 99 192 81 998 74 89 1002 1003 1004 38 
root bin daemon adm lp sync shutdown halt mail operator games FTP User Nobody systemd Network Management System message bus User for polkitd Privilege-separated SSH      
/root /bin /sbin /var/adm /var/spool/lpd /sbin /sbin /sbin /var/spool/mail /root /usr/games /var/ftp / / / / /var/empty/sshd /var/spool/postfix /home/ming /home/test10 /home/user11 /etc/ntp 
/bin/bash /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/sync /sbin/shutdown /sbin/halt /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/bash /bin/bash /bin/bash /sbin/nologin
  • 過(guò)濾兩個(gè)或多個(gè)關(guān)鍵詞
[root@minglinux-01 ~]# cat b.txt 
letme
karsa
xiaohu 
uzi
ming
.....
mlxg
uzi
lose 
s8
[root@minglinux-01 ~]# grep -E 'uzi|ming' b.txt 
uzi
ming
uzi
[root@minglinux-01 ~]# egrep 'uzi|ming' b.txt 
uzi
ming
uzi
[root@minglinux-01 ~]# awk '/uzi|ming/' b.txt 
uzi
ming
uzi
  • 用awk生成以下結(jié)構(gòu)文件

用awk編寫(xiě)生成以下結(jié)構(gòu)文件的程序壳咕。( 最后列使用現(xiàn)在的時(shí)間席揽,時(shí)間格式為YYYYMMDDHHMMSS) 各列的值應(yīng)如下所示,每增加一行便加1囱井,共500萬(wàn)行驹尼。
1,1,0000000001,0000000001,0000000001,0000000001,0000000001,0000000001,2005100110101
2,2,0000000002,0000000002,0000000002,0000000002,0000000002,0000000002,2005100110101

[root@minglinux-01 ~]# awk 'BEGIN{for(i=1;i<=5000000;i++)printf("%d,%d,%010d,%010d,%010d,%010d,%010d,%010d,%d\n",i,i,i,i,i,i,i,i,strftime("%Y%m%d%H%M%S"))}'
1,1,0000000001,0000000001,0000000001,0000000001,0000000001,0000000001,20181022230158
2,2,0000000002,0000000002,0000000002,0000000002,0000000002,0000000002,20181022230158
3,3,0000000003,0000000003,0000000003,0000000003,0000000003,0000000003,20181022230158
4,4,0000000004,0000000004,0000000004,0000000004,0000000004,0000000004,20181022230158
5,5,0000000005,0000000005,0000000005,0000000005,0000000005,0000000005,20181022230158
6,6,0000000006,0000000006,0000000006,0000000006,0000000006,0000000006,20181022230158
7,7,0000000007,0000000007,0000000007,0000000007,0000000007,0000000007,20181022230158
8,8,0000000008,0000000008,0000000008,0000000008,0000000008,0000000008,20181022230158
9,9,0000000009,0000000009,0000000009,0000000009,0000000009,0000000009,20181022230158
10,10,0000000010,0000000010,0000000010,0000000010,0000000010,0000000010,20181022230158
......
  • awk用print打印單引號(hào)

awk 'BEGIN{print "a'"'"'s"}' //不用脫義,就多寫(xiě)幾個(gè)單引號(hào)庞呕、雙引號(hào)
awk 'BEGIN{print "a'''s"}' //用脫義新翎,脫義的是單引號(hào)
awk 'BEGIN{print "a"s"}' //用脫義,脫義的是雙引號(hào)

[root@minglinux-01 ~]# awk 'BEGIN{print "a'"'"'s"}'
a's
[root@minglinux-01 ~]# awk 'BEGIN{print "a'\''s"}' 
a's
[root@minglinux-01 ~]# awk 'BEGIN{print "a\"s"}'
a"s
  • 把兩個(gè)文件中相同的行合并成一行
[root@minglinux-01 ~]# cat 1.txt 
a b c
1 2 3
4 5 6
[root@minglinux-01 ~]# cat 2.txt 
c b a
3 2 1
6 5 4
[root@minglinux-01 ~]# paste 1.txt 2.txt 
a b c   c b a
1 2 3   3 2 1
4 5 6   6 5 4

還可以用-d選項(xiàng)在兩個(gè)文件連接處用一個(gè)指定的字符連接住练,示例命令如下:

[root@minglinux-01 ~]# paste -d '+' 1.txt 2.txt 
a b c+c b a
1 2 3+3 2 1
4 5 6+6 5 4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末地啰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子讲逛,更是在濱河造成了極大的恐慌亏吝,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盏混,死亡現(xiàn)場(chǎng)離奇詭異蔚鸥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)许赃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)止喷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人混聊,你說(shuō)我怎么就攤上這事弹谁。” “怎么了句喜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵预愤,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我咳胃,道長(zhǎng)植康,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任拙绊,我火速辦了婚禮向图,結(jié)果婚禮上泳秀,老公的妹妹穿的比我還像新娘标沪。我一直安慰自己榄攀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布金句。 她就那樣靜靜地躺著檩赢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪违寞。 梳的紋絲不亂的頭發(fā)上贞瞒,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音趁曼,去河邊找鬼军浆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挡闰,可吹牛的內(nèi)容都是我干的乒融。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摄悯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赞季!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奢驯,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤申钩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瘪阁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體撒遣,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年管跺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了义黎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伙菜,死狀恐怖轩缤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贩绕,我是刑警寧澤火的,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站淑倾,受9級(jí)特大地震影響馏鹤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娇哆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一湃累、第九天 我趴在偏房一處隱蔽的房頂上張望勃救。 院中可真熱鬧,春花似錦治力、人聲如沸蒙秒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晕讲。三九已至,卻和暖如春马澈,著一層夾襖步出監(jiān)牢的瞬間瓢省,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工痊班, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勤婚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓涤伐,卻偏偏與公主長(zhǎng)得像馒胆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子废亭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • awk: grep,sed,awk grep:文本過(guò)濾 sed:文本編輯 awk:文本格式化工具国章; 1 什么是aw...
    木林森閱讀 1,764評(píng)論 0 16
  • 本章主要學(xué)習(xí)內(nèi)容awk介紹 ?awk基本用法 ?awk變量 ?awk格式化 ?awk操作符 ?awk條件判斷 ?a...
    楠人幫閱讀 1,254評(píng)論 0 8
  • awk:報(bào)告生成器,格式化文本輸出 內(nèi)容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 a...
    BossHuang閱讀 1,452評(píng)論 0 9
  • 報(bào)告生成器豆村,格式化文本輸出液兽,常用選項(xiàng): -F:指明輸入時(shí)用到的字段分隔符 -v var=value:自定義變量 介...
    毛利卷卷發(fā)閱讀 516評(píng)論 0 1
  • 1. 資源配置,其實(shí)本質(zhì)反應(yīng)的是我們是否開(kāi)始落實(shí)腦海中的想法掌动,是否開(kāi)始行動(dòng)四啰。比如,我們想提高英語(yǔ)粗恢,但是我們不去花時(shí)...
    Bradywbs閱讀 140評(píng)論 0 0