文本處理以及shell編程知識點

文本處理、shell

uniq
-d:僅顯示重復過的行
-c:顯示重復行的次數
-u:僅顯示不曾重復的行
sed的高級應用:
數據先存放到保持空間,然后在進入模式空間進行處理,按照規則依次輸出
awk
netstat -tan | awk ‘/^tcp/{state[$NF]++}END{for(i in state){print i,state[i]}}’
數組引用
若要遍歷數組的每個元素,要是用for循環
for(var in array){for-body}
注意:var會遍歷array的每個索引
split:
netstat -tan | awk ‘/^tcp\>/{split($5,ip,”:”);count[ip[1]]++}END{for(i in count){print i,count[i]}}’

常用的文本處理實例:
(一)、搜索IP地址
1、ifconfig eth0 | grep -o “\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}”
2、ifconfig eth0 | sed -n ‘2p’ | awk ‘{print $2}’
(二)、分區利用率
1、df -h | awk ‘{print $5}’ | awk -F ‘%’ ‘{print $1}’
2、df -h | tr -s ‘ ‘ | cut -d ‘ ‘ -f 5
\1:引用前面所匹配的內容 適用于\(\)分組所匹配到的內容
&:vim模式或者sed模式,引用前面所匹配的內容
sed ‘s/quiet/& net\.ifnames=0/’ /etc/default/grub
例如:添加用戶bash、testbash、basher、nologin,找出當前系統中用戶名和默認shell類型相同的用戶
grep “\(^[[:alnum:]]\+\).*\1$” /etc/passwd

字符類
字符類 說明
[[:alpha:]] 小寫及大寫字母,等價于[a-zA-Z]
[[:alnum:]] 小寫和大寫字母及數字,等價于[a-zA-Z0-9]
[[:cntrl:]] 控制字符,如制表符(Tab)、換行符或反斜線
[[:digit:]] 數字0~9,等價于[0-9]
[[:graph:]] ASCII碼從33~126之間的可打印字符
[[:lower:]] 小寫字母,等價于[a-z]
[[:punct:]] 標點符號,包括問號、句號、逗號、冒號、分號、單引號、英文的重音符或中文的間隔號(`)、!、@、#、%、^、&、*、左右括號、左右中括號、左右大括號、正斜杠(/)、-、_
[[:upper:]] 大寫字母,等價于[A-Z]
[[:space:]] 空白字符,包括空格、水平制表符、垂直制表符、換行、換頁、回車
[[:xdigit:]] 十六進制字符,等價于[a-fA-F0-9]

通配符
元字符 作用
* 匹配0個或任意多個字符,也就是可以匹配任何內容
? 匹配任意一個字符
[] 匹配[ ]中任意一個字符
[-] 匹配括號中任意一個字符,-代表一個范圍,例如:[a-z]代表匹配一個小寫字母
[^] 邏輯非,表示匹配不是中括號內的一個字符,例如[^0-9]代表匹配一個不是數字的字符

shell編程
變量:
局部變量:生效范圍是當前shell進程;對當前shell之外的其他shell進程包括當前shell的子shell無效
環境變量:對當前shell和子shell均有效
本地變量:只對當前shell進程的代碼中有效
算數運算:
實現算數運算:
let var=算數表達式
var=$[算數表達式] 將算數表達式的結果賦值給var
變量作用域:
環境變量:當前shell以及子shell均有效
本地變量:當前shell以及函數內的變量均有效
局部變量:僅作用于函數體內部,當函數執行完成,局部變量會自動銷毀失效
數組:
聲明數組:declare -a array
-A array 聲明關聯數組
數組賦值:
array_name=(“value1” “value2″…)
引用數組元素:
${array[index]}
${array[@]} 數組所有元素
${array[*]}
${#array[*]}數組元素的個數

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92622

(0)
SignalSignal
上一篇 2018-03-18
下一篇 2018-03-18

相關推薦

  • Shell腳本編程

    Shell腳本編程 關于腳本的調試     bash -n /path/to/some_script                   &…

    Linux干貨 2016-08-15
  • 第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。 4、復制/etc/sk…

    Linux干貨 2017-02-07
  • 來馬哥教育后

    來北京三天了,說實話,我長了不少見識,甚至可以說是見過了以前一些從沒想到過的事情,我拼了命往大城市來,如今如我所愿了,我來的時候發誓對自己說:我要留在北京,我也要積累足夠的資本讓自己真正成為大城市的上層社會人士,現在吃多少苦我都無所謂。 我以前在建筑工地的時候想:我將來能學IT是最幸福的事了。當時真是這么想的,等我真到馬哥教育,我發現,我把問題想的太簡單,就…

    Linux干貨 2018-03-26
  • sed命令、crontab任務、簡單腳本練習(21期網絡班第六周博客作業)

    vim使用: 直接使用sed模式空間演示,基本語法與vim命令模式類似(需注意vim默認定界為當前行,一般需要在前面加1,$定界為全文,而sed不需要) 1、 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;      sed &#03…

    Linux干貨 2016-08-22
  • shell編程if及find查找作業

    寫一個腳本/root/bin/createuser.sh,實現如下功能:使用一個用戶名做為參數,如果指定參數的用戶存在,就顯示其存在,否則添加之;顯示添加的用戶的id號等信息 [root@www sh.log]# cat createuser.sh  #!/bin/bash #author #使用一個用戶名作為參數,如…

    Linux干貨 2016-08-16
  • HA Cluster 之 vrrp (keepalived)

      HA Cluster 之 vrrp (keepalived) 0x00 前言 0x01 VRRP 協議 VRRP 簡介 VRRP 工作原理 VRRP負載分擔方式的特點 VRRP 中的一些術語 0x02 keepalived 功用: 0x03 keepalived 配置 HA Cluster 的配置前提: 配置文件組件部分: 配置文件解析: 附:…

    Linux干貨 2017-05-16
欧美性久久久久