shell作業 1. 取出文件基名 ????法一:cat 1.txt | egrep -o "[^/]+$" ????法二:awk -F/ '{print $NF}' 1.txt 2. 取ip地址 ????法一:ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d: -f2 ????法二:ifconfig eth0 | egrep -o 'addr:[0-9\.]+' |cut -d: -f2 ????法三:ifconfig eth0 | awk -F'[: ]+' '/inet addr/{print $4}' ?????????ifconfig eth0 | awk -F'[[:space:]:]+' '/inet addr/{print $4}' 3. 百度云網頁 ????法一:egrep -o '[^"><]+mp4' baiduyun.txt | sort -u ????法二:awk 'BEGIN{RS=">|<"} /mp4$/{print($0)}' baiduyun.txt 基礎知識 1. 馮諾依曼體系架構 ????CPU:由運算器和控制器組成 ????運算器:完成算數運算、邏輯運算、數據傳輸 ????控制器:控制程序的執行 ????存儲器:用于記憶程序和數據(內存) 2. 高級語言與低級語言 ????高級語言和低級語言之間的轉換工具:編譯器和解釋器 ????C、C++需要本地編譯 ????java、python需要被解釋器編譯成中間代碼,在虛擬機上運行 ????編譯語言把源代碼轉換成目標機器的CPU指令 ????解釋語言,解釋后轉換成字節碼,運行在虛擬機上,解釋器執行中間代碼 3. Python解釋器 ????CPython:最廣泛的解釋器 ????iPython:交互式、功能增強的Cpython ????PyPy:JIT技術,動態編譯Python代碼 ????Jython:Python的源代碼編譯成java的字節碼,跑在JVM上 ????IronPython:與Jython類似,python代碼編譯成.Net的字節碼 4. Python基礎 ????注釋:# ????布爾:True、False ????十六進制:0xa??八進制:0o10??二進制:0b10 ????字符串:使用能夠''或""引用字符的序列,''' """單雙三引號,可以跨行、可以在其中自由的使用單雙引號 ????????????在字符串前面加上r或者R前綴,表示該字符不做特殊處理 5. 基礎語法 ????標識符:可以用字母、下劃線和數字,但只能以字母或下劃線開頭,不能使用如def等作為關鍵字,大小寫有區別。 ????不允許使用中文,不能使用歧義單詞,不能隨意用下劃線開頭的表示符。 ????常量:賦值后就不能改變值的標識符,python無法定義常量 ????變量:賦值后,可以改變值得標識符 6. python語言類型 ????python是動態、強類型語言。 ????靜態編譯語言:實現聲明變量類型,類型不能再改變,編譯時檢查 ????動態編譯語言:不需要事先聲明類型,隨時可以賦值為其他類型;編程時不知道是什么類型。 ????強類型語言:不同類型之間操作,必須先強制類型轉換為同一類型。print('a'+1) ????弱類型語言:不同類型間可以操作,自動隱式轉換。 7. 算數運算符和位運算符 ????加+??減-??乘*??除/???取余%??冪** ????/結果是浮點數,//整除 ????與&??或|??取反~??異或^??左移<<??右移>> ???? 8. 原碼、反碼、補碼 ????原碼:5 => 0000 0101? ????反碼:正數將原碼按位取反;負數符號位不變其余按位取反 ????補碼:正數的補碼是其本身;負數符號位不變其余按位取反后+1 ????~12:-13???0000 1100 (取反)--> 1111 0011(-1) --> 1111 0010(除符號位,按位取反) --> 1000 1101=-13 9. 運算符 ????比較運算符: 等于==??不等于!=??大于>??小于<??大于等于>=??小于等于<= ????邏輯運算符:與或非??and or not ????賦值運算符: +=???-=???*=???/=??%=?? ????成員運算符: in 、not in ????身份運算符: is 、is not 10. 程序控制 ?????順序,分支,循環 ??????while循環 for循環 if..eles..判斷 ?????while True: ????????block ?????for _ in range(10):? ?????????print('*') ? ?????if a>b: ?????????print(b,a) ?????else: ????????print(a,b) ???????? 11. continue與break ??????continue:跳出當前循環,開始下次循環。 ??????break:結束循環操作 程序練習: (1)???打印菱形: ????for i in range(-3,4): ????????space = -i if i < 0 else i ????????print(' '*space + '*'*(7-2*space)) ??????打印非對稱菱形: ????for i in range(-3,4): ????????if i<0: ??????????????print(' '*(-i) + '*'*(4+i)) ????????elif i==0: ??????????????print('*'*7) ????????else: ??????????????print(' '*3 + '*'*(4-i)) (2)???99乘法表: ??????for i in range(1,10): ??????????for j in range(1,i+1): ??????????????print('{0}*{1}={2:<2}' .format(i,j,i*j),end=' ') ??????????print() ??????99乘法表倒置(1): ??????for i in range(1,10): ??????????print(' '*7*(i-1),end=" ") ??????????for j in range(i,10): ??????????????print('{0}*{1}={2:<2}' .format(i,j,i*j),end=' ') ??????print() ?????? ??????99乘法表倒置(2): ??????for i in range(1,10): ??????????line = '' ??????????for j in range(1,10): ??????????????if i>j: ??????????????????line = '{}??{}??{:<4}' .format(' ',' ',' ') ??????????????else: ??????????????????line = '{} * {} = {:<4}' .format(i,j,i*j) ??????????????print(line,end=' ') ??????????print()?????? (3)????求10萬以內的質數: ??????import datetime ??????start = datetime.datetime.now() ??????for i in range(101,1,-2):?? ??????????for j in range(3,i**0.5+1,2): ??????????????if i%j==0: ??????????????????break ??????????else:??????? ??????????????print(i) ??????end = datetime.datetime.now() - start ????????????????? (4)????求斐波那契數列第101項: ???????a=1 ???????b=1 ???????index=2 ???????print('{0},{1}' .format(0,1)) ???????print('{0},{1}' .format(1,1)) ???????print('{0},{1}' .format(2,1)) ???????while True: ???????????c=a+b ???????????a=b ???????????b=c ???????????index += 1 ???????????print('{0},{1}' .format(index,c)) ???????????if index == 101: ???????????????break
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87284