Linux 命令學習

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

例子到時候在加。

相關文章
相關標籤/搜索