1.linux通配符
*:代表所有字符(0到多個);
?:代表一個字符;
;:連續不同命令之間的分隔符;
#:配置文件注釋;
|:管道;
~:當前用戶的家目錄;
-:上一次所在的路徑;
$:變量前面需要加的符號;
/:路徑分隔符;
>或1>:重定向,會覆蓋原有數據;
>>:追加重定向;
<:輸入重定向(xargs、tr);
<<:追加輸入重定向(cat);
':單引號,不具有命令置換功能,輸出時所見即所得;
":雙引號,具有變量置換功能,解析變量后才輸出.不加引號相當於雙引號;
`:反引號,兩個``中間為命令,會先執行,等價於$();
{}:命令區塊組合或內容序列,echo stu{1..5};cp a.txt {,.bak};
!:邏輯運算中的非(not);
&&:and並且,前一個命令執行成功時,才執行后一個命令;
||:or或,前一個命令執行失敗時,執行后一個命令;
.:當前目錄;
..:上一級目錄;
2.正則表達式:為處理大量字符串而定義的一套規則和方法
a.基礎正則第一波:
# 匹配以m開頭的字符,因為是貪婪模式,所以匹配到整行 grep "^m" oldboy.txt # 匹配以m結尾的字符 grep "m$" oldboy.txt # 匹配空行並顯示行號 grep -n "^$" oldboy.txt # 排除空行 grep -vn "^$" oldboy.txt # 只輸出匹配到的m字符 grep -no "m" oldboy.txt
.:代表且只能代表任意一個字符;
*:重復0個或多個前面的一個字符,例如:my*,0個y,會匹配有m字符的字符串;1個y,my;多個y,myyy;
\:轉義,讓有特殊意義的字符,只代表字符本身;
.*:匹配任意長度的任意字符.
b.基礎正則第二波:
grep -no [abc] oldboy.txt 匹配集合內的任意一個字符 grep -no [^abc] oldboy.txt 不匹配集合內的字符 a\{n,m\} 前一個字符,重復n到m次 a\{n,\} 重復至少n次 a\{n\} 重復n次 a\{,m\} 最多重復m次 # -w參數是按單詞搜索,只匹配有這個單詞的行 grep -w "oldboy" oldboy.txt # grep -E 不用再加轉義符\,egrep、sed -r是同樣的道理--支持擴展正則 # -i、-v為常用參數、-o(用於統計出現在文中的次數)
c.通配符和正則表達式比較:
通配符多用在文件上,比如find、ls、cp等;正則表達式多用於文本過濾,比如grep、awk、sed等;
*在通配符中表示匹配任意的0個或多個字符;在正則表達式中是重復之前的一個或者多個字符,不能獨立使用.
3.python去重的幾種方法:
>>> lst1 = [2, 1, 3, 4, 1] >>> lst2 = list(set(lst1)) >>> print(lst2) [1, 2, 3, 4] 二、常規方法 >>> lst1 = [2, 1, 3, 4, 1] >>> temp = [] >>> for item in lst1: if not item in temp: temp.append(item) >>> print(temp) [2, 1, 3, 4] 三、列表推導 >>> lst1 = [2, 1, 3, 4, 1] >>> temp = [] >>> [temp.append(i) for i in lst1 if not i in temp] [None, None, None, None] >>> print(temp) [2, 1, 3, 4] >>> data = [2, 1, 3, 4, 1] >>> [item for item in data if data.count(item) == 1] [2, 3, 4] 四、sort、sorted >>> lst1 = [2, 1, 3, 4, 1] >>> lst2.sort(key=lst1.index) >>> lst2 = sorted(set(lst1), key=lst1.index) 個人覺得第一種和第三種方法比較好理解
sort與sorted區別:
sort 是應用在list上的方法,sorted 可以對所有可迭代的對象進行排序操作.list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作.
通過指定列表中的元素進行排序: >>> random = [(2, 2), (3, 4), (4, 1), (1, 3)] >>> random.sort(key=lambda s:s[1]) >>> print(random) [(4, 1), (2, 2), (1, 3), (3, 4)] sorted的使用方法: >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] # 按年齡降序排序 >>> sorted(students, key=lambda s: s[2], reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]