給下面的字元中加上""号
cat xx.txt
原始
master
1.8M
awk '{print "\""$0"\""}' xx.txt
"原始"
"master"
"1.8M"
或者
sed 's/^/\"/;s/$/\"/' xx.txt
都可以實作
通過awk同時使用多個分隔符,然後通過正則比對多個分隔符的方法來實作:
[root@oldboy ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
10.0.0.185
我們來說明下這個簡單易用的好辦法:
提示:本題NR是行号,分隔符+号比對,[]裡一個或多個任意一個分隔符,這裡就是比對一個或多個冒号或空格。
1)awk -F 後面跟分隔符‘[空格:]+’,其中[空格:]多分隔符寫法,意思是以空格或冒号做分隔,後面的"+"号是正規表達式,意思是比對前面空格或冒号,兩者之一的1個或1個以上。
2)NR==2和sed -n "2p",相當,意思都是選擇第幾行,例:
[root@oldboy ~]# ifconfig eth0|awk NR==2
inet addr:10.0.0.185 Bcast:10.0.0.255 Mask:255.255.255.0
3)指定awk -F '[ :]+'分隔符後,不同字元串被分隔的列依次為:
inet
addr
Bcast:10.0.0.255 Mask:255.255.255.0
第一列
第二列
第三列
第四列
後面忽略不計。
4)整個答案awk部分意思是,通過NR==2取出第二行,然後,通過-F '[-:]+多分隔符正則比對,然後通過{print $4}列印出第四列 !謝謝楊瑞同學的答案啊, 懶得寫了,是以讓你總結下。嘿嘿,看到後别怪老師啊。
5)掌握了理論要去實踐驗證才是科學嚴謹的學習态度,好,來幾個例子實踐說話吧。
[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'
1
[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'
2
[root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'
生産實戰案例):監控MySQL主從同步是否異常,如果異常,則發送短信或者郵件給管理者。提示:如果沒主從同步環境,可以用下面文本放到檔案裡讀取來模拟:
階段1:開發一個守護程序腳本每30秒實作檢測一次。
階段2:如果同步出現如下錯誤号(1158,1159,1008,1007,1062),則跳過錯誤。
階段3:請使用數組技術實作上述腳本(擷取主從判斷及錯誤号部分)
<code>[root@oldboy~]</code><code># mysql -uroot -p'oldboy' -S /data/3307/mysql.sock -e "show slavestatus\G;"</code>
<code>*************************** 1. row ***************************</code>
<code> </code><code>Slave_IO_State:Waiting </code><code>for</code> <code>master to send event</code>
<code> </code><code>Master_Host:10.0.0.179 </code><code>#目前的mysql master伺服器主機</code>
<code> </code><code>Master_User: rep</code>
<code> </code><code>Master_Port: 3306</code>
<code> </code><code>Connect_Retry: 60</code>
<code> </code><code>Master_Log_File:mysql-bin.000013</code>
<code> </code><code>Read_Master_Log_Pos: 502547</code>
<code> </code><code>Relay_Log_File:relay-bin.000013</code>
<code> </code><code>Relay_Log_Pos:251</code>
<code> </code><code>Relay_Master_Log_File:mysql-bin.000013</code>
<code> </code><code>Slave_IO_Running:Yes</code>
<code> </code><code>Slave_SQL_Running: Yes</code>
<code> </code><code>Replicate_Do_DB: </code>
<code> </code><code>Replicate_Ignore_DB: mysql</code>
<code> </code><code>Replicate_Do_Table: </code>
<code> </code><code>Replicate_Ignore_Table: </code>
<code> </code><code>Replicate_Wild_Do_Table: </code>
<code> </code><code>Replicate_Wild_Ignore_Table: </code>
<code> </code><code>Last_Errno: 0</code>
<code> </code><code>Last_Error: </code>
<code> </code><code>Skip_Counter: 0</code>
<code> </code><code>Exec_Master_Log_Pos: 502547</code>
<code> </code><code>Relay_Log_Space:502986</code>
<code> </code><code>Until_Condition:None</code>
<code> </code><code>Until_Log_File: </code>
<code> </code><code>Until_Log_Pos: 0</code>
<code> </code><code>Master_SSL_Allowed: No</code>
<code> </code><code>Master_SSL_CA_File: </code>
<code> </code><code>Master_SSL_CA_Path: </code>
<code> </code><code>Master_SSL_Cert: </code>
<code> </code><code>Master_SSL_Cipher: </code>
<code> </code><code>Master_SSL_Key: </code>
<code> </code><code>Seconds_Behind_Master: 0 </code><code>#和主庫比同步延遲的秒數,這個參數很重要</code>
<code>Master_SSL_Verify_Server_Cert: No</code>
<code> </code><code>Last_IO_Errno: 0</code>
<code> </code><code>Last_IO_Error: </code>
<code> </code><code>Last_SQL_Errno: 0</code>
<code> </code><code>Last_SQL_Error:</code>
<code></code>
本文轉自 a120518129 51CTO部落格,原文連結:http://blog.51cto.com/silencezone/1874024,如需轉載請自行聯系原作者