Linux 命令學習

lovebear發表於2018-06-26

今天想學習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

例子到時候在加。

 

相關文章