今天想學習linux,但win7系統,沒辦法打算安裝了一下虛擬機器virtualbox+centos7.
映象和安裝檔案都準備就緒,通過virtualbox新增centos7,在設定系統時新增映象,進入系統,但是enter之後一直黑屏。選擇映象檔案時不能選擇64位linux,但我的映象是64位,網上說無64位選項是由於系統未開啟虛擬機器,需通過bios able這個虛擬設定。今天嘗試未成功。改完後應用開啟顯示找不到com 物件。鬱悶中。
對於linux系統awk, grep, sed為三劍客。
awk是適合格式化文字,對文字進行復雜的格式化處理,
grep是查詢或匹配文字
sed是編輯匹配到的文字
awk學習
awk [options]`program` 檔案1,檔案2。。。
這個不好理解,通過具體的例項。
awk `{print $1}` 檔名
$1意思是每行第一列,awk是通過逐行處理,一行一行處理,通常以換行符為標記為一行,每行分割符預設為空格;$2為第二列。。$NF為最後一列,倒數第二列為$(NF-1)。$0為整行。
cat awktest |awk `{print $1}` awktest 顯示每一行的第一列
cat awktest |awk `{print “name:” $1}` awktest. 顯示帶有name:
cat awktest |awk `{print “hello ” $1,”,welcome”}` awktest 顯示如hello 人 ,welcome
除此之外還有begin end 可類似於表頭表尾。
at awktest |awk `BEGIN{print “wenhou”,”name”} {print “hello ” $1,”,welcome”}END{print “jieshu”,”wumingzi”}` awktest
如出現的結果為
wenhou name
hello hello ,welcome
hello linux ,welcome
hello byb ,welcome
jieshu wumingzi
awk還有if else 的語法:
例如對於90 為及格,小於60為不及格。
語法為:awk
cat awktest |awk `BEGIN{print “wenhou”,”name”} {if($3>90){print $1,”jige”}else{print $1,”bujige”}}END{print “this is end”}`
結果如下:
wenhou name
jone bujige
linux jige
byb bujige
this is end
awk暫時學習一些簡單的使用,還能while迴圈等,正規表示式匹配等。 NR代表行號
再來學習sed簡單語句:
sed是 string editor。檔案的增刪改替換查
sed -n `1p` 檔名 顯示第一行
sed `1a aa` 檔名 增加第一行後
sed `1d` file1 刪除第一行
sed `1i` xx 與1a都是增加但放的位置不同。a為增加在後面,i為當前位置。原來資料後移
c 替代 sed ‘1c aa’ file1
s 替換。sed ‘s/1/aa’ ett.txt 將1換成aa
grep 是一個搜尋工具。查詢匹配條件的行。
grep -l “hello” file1 查詢file1檔案下的hello單詞的行的檔名
grep “hello” file1 查詢file1檔案下的hello單詞的行
grep -v “hello” file1 查詢file1檔案下不含hello]單詞的行
-n 顯示匹配的行數與行
-r 遞迴搜尋資料夾下的包含單詞的行
-A 列數。grep 20 -A 10 從20開始往後10行
例題:100行,查詢20行到30行的數。
head -30 ett.txt | tail -11
seq 10 30 用於產生從某個數到另外一個數之間的所有整數 seq 1 2 10 1-10中相鄰2個的數
sed -n `20,30`p ett.txt
grep 20 -A 10 ett.txt
awk `NR>19&&NR<31` ett.txt
例子到時候在加。