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小时内与您取得联系。