shell學習筆記(三)

1.awk

對付文字處理工作,做一些文本/數(shù)據(jù)處理,最基本功能是在文件或字符串中基于指定規(guī)則瀏覽和抽取信息.

1. 調(diào)用awk

第一種是命令行方式,如:

  • awk [-F fs] 'command' file這里,command是真正的awk命令宣鄙。上面例子中, [-F 域分隔符]是可選的默蚌,默認使用空格作為缺省的域分隔符冻晤,這樣就不用指定這個選項.
    fs是指定的分隔符,可以使用字符串或者正則表達式绸吸。例如:-F:.

  • 第二種方法是將所有awk命令插入一個文件鼻弧,并使awk程序可執(zhí)行设江,然后用awk命令解釋器作為腳本的首行,以便通過鍵入腳本名稱來調(diào)用它.

  • 第三種方式是將所有的awk命令插入一個單獨文件温数,然后調(diào)用:
    awk -f script_file file
    -f選項指明在文件 script _ file中的a w k腳本,file是使用awk進行瀏覽的文件名.
    理解:
    第一種是把命令寫在處理文件外面蜻势,用單引號標注撑刺;.
    第二種是把命令寫在處理文件里面;
    第三種是把命令單獨寫成腳本握玛,然后處理文件够傍;

2.awk腳本

   在命令中調(diào)用awk時, awk腳本由各種操作和模式組成.
   如果設置了-F選項挠铲,則awk每次讀一條記錄或一行冕屯,并使用指定的分隔符分隔指定域.
   但如果未設置-F選項,awk假定空格為域分隔符拂苹,并保持這個設置直到發(fā)現(xiàn)一新行
   awk讀取命令行上所指定的各個文件安聘,一次讀取一條記錄,找到域分隔符瓢棒,設置其為域n.
   再針對每一行浴韭,應用程序指定的命令.
  • 模式和動作
    任何awk語句都由模式和動作組成.
  • 模式可以是任何條件語句或復合語句或正則表達式.
    模式有兩個特殊字段,BEGIN ,END.
    BEGIN語句塊在awk從輸入中讀取行之前執(zhí)行.
    這兩個都是可選的語句塊脯宿,變量初始化念颈,打印輸出等語句都可以寫在里面;
  • END在awk從輸入流讀完所有的行之后進行操作.
    實際動作在大括號 { }內(nèi)指明连霉,如果不指明采取動作榴芳,awk將打印出所有瀏覽出來的記錄.
    動作由一個或多個命令、函數(shù)跺撼、表達式組成窟感,之間由換行符或分號分開,主要部分是變量賦值歉井,輸出命令肌括,內(nèi)置函數(shù),控制流語句.
    模式部分決定動作語句何時觸發(fā)及觸發(fā)事件酣难,處理即對數(shù)據(jù)進行的操作.如果省略模式部分谍夭,動作將時刻保持執(zhí)行狀態(tài).
  • awk ’BEGIN { print "start" } pattern { command } END {print"end"}' file.
    begin end 語句塊,通用模式匹配語句塊憨募,這些都是可選的.
    通用語句塊是動作紧索,沒有模式部分,動作時刻執(zhí)行.

  • 域和記錄
    awk執(zhí)行時菜谣,其瀏覽域標記為$1珠漂, $2 . . . $n晚缩。這種方法稱為域標識。使用這些域標識將更容
    易對域進行進一步處理.$0媳危,意即所有域.
圖片3.png
圖片4.png
  • 在碰到 awk錯誤時荞彼,可相應查找:
    ? 確保整個awk命令用單引號括起來.
    ? 確保命令內(nèi)所有引號成對出現(xiàn).
    ? 確保用花括號括起動作語句,用圓括號括起條件語句.
    ? 可能忘記使用花括號待笑,也許你認為沒有必要鸣皂,但 awk不這樣認為,將按之解釋語法.

3.awk中正則表達式及其操作

awk里正則表達式用斜線括起來暮蹂,例如/liu/寞缝,有點跟perl相似.
圖片2.png
元字符的話旅薄,awk都可以識別使用.
awk中if后面的條件用()括起來凿宾,注意與{}區(qū)別,這個是條件表達式.  
應用 awk [-F fs]‘command’ file 腐芍,多注意括號集侯,引號被啼,其余正常使用正則表達式就行.
awk對域還有好幾種操作,參考linux與unix shell棠枉,對于域值比較趟据,修改域操作,增加列值术健,文件長度相加汹碱,還挺有幫助的.
awk還有好多字符串函數(shù),更有效的處理文本荞估;需要對文本處理時咳促,可以參考.
awk里正則表達式用法格式:
圖片1.png

2.輸入輸出(echo,read勘伺,cat跪腹,tee,printf)

  • 使用echo命令可以顯示文本行或變量,或者把字符串輸入到文件飞醉。它的一般形式為:
    echo string
    echo 將各個參數(shù)打印到標準輸出冲茸,并以換行符結(jié)束.
    -n 不用換行符結(jié)束。
    -e 允許后面的輸出進行轉(zhuǎn)義.

  • read從標準輸入中讀取一行缅帘,并把輸入行的每個字段的值傳遞給指定的shell變量.
    可以使用read語句從鍵盤或文件的某一行文本中讀入信息轴术,并將其賦給一個變量.如果只指定了一個變量,那么 read將會把所有的輸入賦給該變量钦无,直至遇到第一個文件結(jié)束符或回車.
    它的一般形式為:
    read varible1 varible2 ...
    eg:read name surname
    peng liu
    echo $name $ surname
    peng liu
    如果逗栽,變量少于字段個數(shù),那么第一個字段被賦給第一個變量失暂,其余的部分都賦給第二個變量.

  • cat
    顯示文件內(nèi)容彼宠,創(chuàng)建文件.
  • tee
    tee命令功能可以用字母T表示鳄虱,功能是把輸出的一個副本輸送到標準輸出,另一個副本拷貝到指定的文件里.
    sort file | tee out.txt

  • printf
    格式化輸出凭峡,加強版的echo拙已,有各種各樣的格式輸出.類似與c語言里的printf().
    printf函數(shù)基本語法是printf( [格式控制符],參數(shù))摧冀,格式控制字符通常在引號里.

格式控制符:

圖片1.png
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倍踪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子按价,更是在濱河造成了極大的恐慌惭适,老刑警劉巖笙瑟,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楼镐,死亡現(xiàn)場離奇詭異,居然都是意外死亡往枷,警方通過查閱死者的電腦和手機框产,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來错洁,“玉大人秉宿,你說我怎么就攤上這事⊥筒辏” “怎么了描睦?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長导而。 經(jīng)常有香客問我忱叭,道長,這世上最難降的妖魔是什么今艺? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任韵丑,我火速辦了婚禮,結(jié)果婚禮上虚缎,老公的妹妹穿的比我還像新娘撵彻。我一直安慰自己,他們只是感情好实牡,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布陌僵。 她就那樣靜靜地躺著,像睡著了一般创坞。 火紅的嫁衣襯著肌膚如雪拾弃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天摆霉,我揣著相機與錄音豪椿,去河邊找鬼奔坟。 笑死,一個胖子當著我的面吹牛搭盾,可吹牛的內(nèi)容都是我干的咳秉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鸯隅,長吁一口氣:“原來是場噩夢啊……” “哼澜建!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝌以,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤炕舵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跟畅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咽筋,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年徊件,在試婚紗的時候發(fā)現(xiàn)自己被綠了奸攻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡虱痕,死狀恐怖睹耐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情部翘,我是刑警寧澤硝训,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站新思,受9級特大地震影響窖梁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜表牢,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一窄绒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崔兴,春花似錦彰导、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至堰燎,卻和暖如春掏父,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秆剪。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工赊淑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爵政,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓陶缺,卻偏偏與公主長得像钾挟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饱岸,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

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

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,407評論 0 5
  • 基礎命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,103評論 0 0
  • 知識點 sort uniq cut wc sed命令 awk命令 crontab定時器 sort sort 命令對...
  • awk介紹awk變量printf命令:實現(xiàn)格式化輸出操作符awk patternawk actionawk數(shù)組aw...
    哈嘍別樣閱讀 1,571評論 0 4
  • 一. AWK 說明 awk的處理文本和數(shù)據(jù)的方式:它逐行掃描文件掺出,從第一行到最后一行,尋找匹配的特定模式的行苫费,并...
    西華子閱讀 934評論 0 4