ava識堂,一個高原創,高收藏,有干貨的微信公眾號,歡迎關注
sort 命令對 File 參數指定的文件中的行排序,并將結果寫到標準輸出。如果 File 參數指定多個文件,那么 sort 命令將這些文件連接起來,并當作一個文件進行排序。
sort語法
[root@www ~]# sort [-fbMnrtuk] [file or stdin] 選項與參數: -f :忽略大小寫的差異,例如 A 與 a 視為編碼相同; -b :忽略最前面的空格符部分; -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法; -n :使用『純數字』進行排序(默認是以文字型態來排序的); -r :反向排序; -u :就是 uniq ,相同的數據中,僅出現一行代表; -t :分隔符,默認是用 [tab] 鍵來分隔; -k :以那個區間 (field) 來進行排序的意思
對/etc/passwd 的賬號進行排序 [root@www ~]# cat /etc/passwd | sort adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
sort 是默認以第一個數據來排序,而且默認是以字符串形式來排序,所以由字母 a 開始升序排序。
/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3 root:x:0:0:root:/root:/bin/bash uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
默認是以字符串來排序的,如果想要使用數字排序:
cat /etc/passwd | sort -t ':' -k 3n root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh
默認是升序排序,如果要倒序排序,如下
cat /etc/passwd | sort -t ':' -k 3nr nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ntp:x:106:113::/home/ntp:/bin/false messagebus:x:105:109::/var/run/dbus:/bin/false sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
如果要對/etc/passwd,先以第六個域的第2個字符到第4個字符進行正向排序,再基于第一個域進行反向排序。
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r sync:x:4:65534:sync:/bin:/bin/sync proxy:x:13:13:proxy:/bin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh
查看/etc/passwd有多少個shell:對/etc/passwd的第七個域進行排序,然后去重:
cat /etc/passwd | sort -t':' -k 7 -u root:x:0:0:root:/root:/bin/bash syslog:x:101:102::/home/syslog:/bin/false daemon:x:1:1:daemon:/usr/sbin:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
uniq命令可以去除排序過的文件中的重復行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重復行必須是相鄰的。
uniq語法
[root@www ~]# uniq [-icu] 選項與參數: -i :忽略大小寫字符的不同; -c :進行計數 -u :只顯示唯一的行
testfile的內容如下
cat testfile hello world friend hello world hello
直接刪除未經排序的文件,將會發現沒有任何行被刪除
#uniq testfile hello world friend hello world hello
排序文件,默認是去重
#cat words | sort |uniq friend hello world
排序之后刪除了重復行,同時在行首位置輸出該行重復的次數
#sort testfile | uniq -c 1 friend 3 hello 2 world
僅顯示存在重復的行,并在行首顯示該行重復的次數
#sort testfile | uniq -dc 3 hello 2 world
僅顯示不重復的行
sort testfile | uniq -u friend
cut命令可以從一個文本文件或者文本流中提取文本列。
cut語法
[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [root@www ~]# cut -c 字符區間 <==用于排列整齊的信息 選項與參數: -d :后面接分隔字符。與 -f 一起使用; -f :依據 -d 的分隔字符將一段信息分割成為數段,用 -f 取出第幾段的意思; -c :以字符 (characters) 的單位取出固定字符區間;
PATH 變量如下
[root@www ~]# echo $PATH /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games # 1 | 2 | 3 | 4 | 5 | 6 | 7
將 PATH 變量取出,我要找出第五個路徑。
#echo $PATH | cut -d ':' -f 5 /usr/local/bin
將 PATH 變量取出,我要找出第三和第五個路徑。
#echo $PATH | cut -d ':' -f 3,5 /sbin:/usr/local/bin
將 PATH 變量取出,我要找出第三到最后一個路徑。
echo $PATH | cut -d ':' -f 3- /sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
將 PATH 變量取出,我要找出第一到第三個路徑。
#echo $PATH | cut -d ':' -f 1-3 /bin:/usr/bin:/sbin:
將 PATH 變量取出,我要找出第一到第三,還有第五個路徑。
echo $PATH | cut -d ':' -f 1-3,5 /bin:/usr/bin:/sbin:/usr/local/bin
實用例子:只顯示/etc/passwd的用戶和shell
#cat /etc/passwd | cut -d ':' -f 1,7 root:/bin/bash daemon:/bin/sh bin:/bin/sh
統計文件里面有多少單詞,多少行,多少字符。
wc語法
[root@www ~]# wc [-lwm] 選項與參數: -l :僅列出行; -w :僅列出多少字(英文單字); -m :多少字符;
默認使用wc統計/etc/passwd
#wc /etc/passwd 40 45 1719 /etc/passwd
40是行數,45是單詞數,1719是字節數
wc的命令比較簡單使用,每個參數使用如下:
#wc -l /etc/passwd #統計行數,在對記錄數時,很常用 40 /etc/passwd #表示系統有40個賬戶 #wc -w /etc/passwd #統計單詞出現次數 45 /etc/passwd #wc -m /etc/passwd #統計文件的字節數 1719
原文:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html
子模型的理解 ?
CSS 盒子模型具有內容 (content)、填充 (padding)、邊框 (border)、邊界 (margin)這些屬性。
我們所說的 width,height 指的是內容 (content) 的寬高。
一個盒子模型的中:
如何在頁面上實現一個圓形的可點擊區域 ?
實現不使用 border 畫出 1px 高的線,在不同瀏覽器的標準模式與怪異模式下都能保持一致的效果。
<div style="height:1px;overflow:hidden;background:red"></div>
CSS 中哪些屬性可以同父元素繼承 ?
繼承:(X)HTML 元素可以從其父元素那里繼承部分 CSS 屬性,即使當前元素并沒有定義該屬性,比如:color,font-size。
box-sizing 常用的屬性有哪些 ?分別有什么作用 ?
常用的屬性:content-box、 border-box 、inherit
作用
頁面導入樣式時,使用 link 和 @import 有什么區別 ?
常見兼容性問題?
清除浮動,什么時候需要清除浮動,清除浮動都有哪些方法 ?
一個塊級元素如果沒有設置 height,那么其高度就是由里面的子元素撐開,如果子元素使用浮動,脫離了標準的文檔流,那么父元素的高度會將其忽略,如果不清除浮動,父元素會出現高度不夠,那樣如果設置 border 或者 background 都得不到正確的解析。
正是因為浮動的這種特性,導致本屬于普通流中的元素浮動之后,包含框內部由于不存在其他普通流元素了,也就表現出高度為 0(高度塌陷)。在實際布局中,往往這并不是我們所希望的,所以需要閉合浮動元素,使其包含框表現出正常的高度。
清除浮動的方式
總結:比較好的是倒數第 2 種方式,簡潔方便。
position 、float 和 display 的取值和各自的意思和用法
position
float
display
定位機制
上面三個屬性都屬于 CSS 定位屬性。CSS 三種基本的定位機制:普通流、浮動、絕對定位。
css3 動畫效果屬性有哪些 ?
canvas 與 svg 的區別 ?
現在對兩種技術做對比歸納如下:
Canvas
SVG
px 和 em 的區別 ?
會不會用 ps 扣圖,png、jpg、gif 這些圖片格式解釋一下,分別什么時候用。如何優化圖像、圖像格式的區別 ?
JPG 的特性
PNG 的特性
GIF格式特點
由以上特點看出只有 256 種顏色的 gif 圖片不適合作為照片,它適合做對顏色要求不高的圖形。
我們知道可以以外鏈的方式引入 CSS 文件,請談談外鏈引入 CSS 有哪些方式,這些方式的性能有區別嗎 ?
CSS 的引入方式最常用的有三種
第一:外鏈式
這種方法可以說是現在占統治地位的引入方法。
如同 IE 與瀏覽器。這也是最能體現 CSS 特點的方法;
最能體現 DIV + CSS 中的內容離的思想,也最易改版維護,代碼看起來也是最美觀的一種。
第二:內部樣式表
這種方法的使用情況要少的多,最長見得就是訪問量大的門戶網站。或者訪問量較大的企業網站的首頁。
與第一種方法比起來,優弊端也明顯。
優點:速度快,所有的 CSS 控制都是針對本頁面標簽的,沒有多余的 CSS 命令;再者不用外鏈 CSS 文件。直接在文檔中讀取樣式。
缺點:就是改版麻煩些,單個頁面顯得臃腫,CSS 不能被其他 HTML 引用造成代碼量相對較多,維護也麻煩些采用這種方法的公司大多有錢,對他們來說用戶量是關鍵,他們不缺人進行復雜的維護工作。
第三:行內樣式
認為 HTML 里不能出現 CSS 命令。其實有時候沒有什么大不了。比如通用性差,效果特殊,使用 CSS 命令較少,并且不常改動的地方,使用這種方法反而是很好的選擇。
第四、@import 引入方式
<style type="text/css"> @import url(my.css); </style>
CSS Sprite 是什么,談談這個技術的優缺點。
加速的關鍵,不是降低重量,而是減少個數。傳統切圖講究精細,圖片規格越小越好,重量越小越好,其實規格大小無計算機統一都按 byte 計算。客戶端每顯示一張圖片都會向服務器發送請求。所以,圖片越多請求次數越多,造成延遲的可越大。
誠然 CSS Sprites 是如此的強大,但是也存在一些不可忽視的缺點,如下:
CSS Sprites 非常值得學習和應用,特別是頁面有一堆 ico(圖標)。總之很多時候大家要權衡一下再決定是不是應用 CSS Sprites。
優先級算法如何計算?內聯和 important 哪個優先級高 ?
css 的基本語句構成是 ?
回答:選擇器、屬性和屬性值。
如果讓你來制作一個訪問量很高的大型網站,你會如何來管理所有 CSS 文件、JS 與圖片?
回答:涉及到人手、分工、同步;
CSS 選擇符有哪些 ?哪些屬性可以繼承 ?優先級算法如何計算 ?新增偽類有那些 ?
CSS 選擇符
可繼承的樣式
font-size,font-family,color,ul,li,dl,dd,dt;
不可繼承的樣式
border padding margin width height 事實上,寬度也不是繼承的,而是如果你不指定寬度,那么它就是 100%。由于你子 DIV 并沒有指定寬度,那它就是 100%,也就是與父 DIV 同寬,但這與繼承無關,高度自然也沒有繼承一說。
優先級算法
CSS3 新增偽類舉例
CSS3 有哪些新特性 ?
transform: rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);
collapse、overflow、float 這些特性相互疊加后會怎么樣?
margin collapse 我覺得這里的意思應該是 Collapsing margins,即外邊距折疊,指的是毗鄰的兩個或多個外邊距 (margin) 會合并成一個外邊距。
其中所說的 margin 毗鄰,可以歸結為以下兩點:
absolute 的 containing block(容器塊) 計算方式跟正常流有什么不同 ?
無論屬于哪種,都要先找到其祖先元素中最近的 position 值不為 static 的元素,然后再判斷:
補充:
對 BFC 規范(塊級格式化上下文:blockformatting context)的理解 ?
W3C CSS 2.1 規范中的一個概念,它是一個獨立容器,決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。
(1)算法描述
冒泡排序是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
(2)算法描述和實現
具體算法描述如下:
<1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
<2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對,這樣在最后的元素應該會是最大的數;
<3>.針對所有的元素重復以上的步驟,除了最后一個;
<4>.重復步驟1~3,直到排序完成。
JavaScript代碼實現:
改進冒泡排序: 設置一標志性變量pos,用于記錄每趟排序中最后一次進行交換的位置。由于pos位置之后的記錄均已交換到位,故在進行下一趟排序時只要掃描到pos位置即可。
改進后算法如下:
傳統冒泡排序中每一趟排序操作只能找到一個最大值或最小值,我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一次可以得到兩個最終值(最大者和最小者) , 從而使排序趟數幾乎減少了一半。
改進后的算法為:
三種算法的運行時間為:
由運行結果可以看出時間復雜度更低,耗時更短了。大家可以親自嘗試下,運行的時候最好將三種算法寫在一個文件中運行,否則會由于瀏覽器等原因產生誤差。
冒泡排序的動態圖演示:
(3)算法分析
最佳情況:T(n)=O(n)
當輸入的數據已經是正序時
最壞情況:T(n)=O(n2)
當輸入的數據是反序時
平均情況:T(n)=O(n2)
表現最穩定的排序算法之一,因為無論什么數據進去都是O(n2)的時間復雜度…..所以用到它的時候,數據規模越小越好。唯一的好處可能就是不占用額外的內存空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。
(1)算法簡介
選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
(2)算法描述和實現
n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體算法描述如下:
<1>.初始狀態:無序區為R[1..n],有序區為空;
<2>.第i趟排序(i=1,2,3…n-1)開始時,當前有序區和無序區分別為R[1..i-1]和R(i..n)。該趟排序從當前無序區中-選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區;
<3>.n-1趟結束,數組有序化了。
Javascript代碼實現:
(3)算法分析
最佳情況:T(n)=O(n2)
最差情況:T(n)=O(n2)
平均情況:T(n)=O(n2)
學習前端的同學注意了!!!
學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入前端學習交流群461593224,我們一起學前端!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。