今天想學習linux,但win7系統,沒辦法打算安裝了一下虛擬機virtualbox+centos7.linux
鏡像和安裝文件都準備就緒,經過virtualbox添加centos7,在設置系統時添加鏡像,進入系統,可是enter以後一直黑屏。選擇鏡像文件時不能選擇64位linux,但個人鏡像是64位,網上說無64位選項是因爲系統未打開虛擬機,需經過bios able這個虛擬設置。今天嘗試未成功。改完後應用打開顯示找不到com 對象。鬱悶中。ios
對於linux系統awk, grep, sed爲三劍客。正則表達式
awk是適合格式化文本,對文本進行復雜的格式化處理,centos
grep是查找或匹配文字工具
sed是編輯匹配到的文本學習
awk學習this
awk [options]'program' 文件1,文件2。。。centos7
這個很差理解,經過具體的實例。spa
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
例子到時候在加。