作者:小虾米 发表时间:2017-05-16 23:38:50 类别:Linux
单独的学习Linux命令未免显得枯燥无聊,甚至看了之后还是不知道怎么去用,久了就忘记了,所以我把网上的实例拿出来进行分解,一个一个的来学习,以加深对命令的理解与使用。
首先看实例,这是【千里码-技能树关于访客统计】的一个题目,具体信息如下:
每一个网站都会根据访客日志统计访客数据,比如UV(Unique Visitor,即访问用户)。
UV能够回答一个关键的市场营销问题:“到底有多少人(潜在客户)看到了你发布的信息(即网站)”。
这道题的任务是根据给出的某购物网站访问日志,统计当天该网站UV。
日志文件的每一行代表一次访问行为,每行分别包含三项,以空格分隔,格式为:
用户访问的时间 用户的id 用户的行为
请问8月24号当天,该网站有多少个用户(相同用户id算一个用户)访问?
先不用下面的命令,可以试着用PHP或你所熟悉的语言试试来解答这个题目。
cat ~/Downloads/uv.txt | awk '{print $2}' | sort | uniq -c | wc -l
cat filename
cat > filename
,只能创建新文件,不能编辑已有文件cat file1 file2 > file
cat [-AbeEnstTuv] [--help] [--version] fileName
实例:
//把textfile1的档案内容加上行号后输入textfile2这个文件里
[$~]cat -n textfile1 > textfile2
//创建文件的功能,创建文件后,要以EOF或STOP结束;
[$~]cat > test.txt << EOF //注:创建test.txt文件;
> 测试 cat 创建文件,并且为文件输入内容;//注:这是为linuxsir.org.txt文件输入内容;
> 小虾米测试;//注:这是为linuxsir.org.txt文件输入内容;
> EOF //注:退出编辑状态
参考资料
相近命令:more、less
"|":就是将两个命令隔开,管道符左边命令的输出就是右边命令的输入,可包含多个管道符。 例:
[$~]ps -ef | grep 'mysql'
[$~]ls -a | grep test | awk "{print $1}"
awk [options] 'commands' filename
实例:
[$~]echo '11 22 33 44' | awk '{print $3" "$2" "$1}'
//输出:33 22 11
//$1等表示的是数据的每一列,$1表示第一列,$2表示第二列,以此类推。
//a.txt文件
name age sex
xiexie 22 1
rtan 33 0
ryan 30 1
july 10 1
xieming 30 1
[$~]awk '$2>30{print $0}' a.txt
//输出
rtan 33 0
ryan 30 1
xieming 30 1
参考资料
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数说明:
实例:
//x.txt
xieming 22 1
rtan 33 0
ryan 30 1
july 10 1
xieming 30 1
[$~]sort -n -k 2 -t ' ' x.txt
//以数值形式[-n]排序用空格分割 [-t ' ']的第二列[-k 2]
//输出
july 10 1
xieming 22 1
ryan 30 1
xieming 30 1
rtan 33 0
参考资料:
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数说明:
实例:
//x.txt
a 10
b 30
a 10
b 30
c 11
a 10
[$~]uniq x.txt
//输出
a 10
b 30
c 11
[$~]uniq -c x.txt
//输出,第一列为出现的次数
3 a 10
2 b 30
1 c 11
说明:Linux wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据
语法格式:wc [-clw][--help][--version][文件...]
参数说明:
实例:
//默认显示指定文件的行数,字数,字节数
[$~]wc x.txt
//输出 6行,18字,64字节
6 18 64 x.txt
[$~]wc -l x.txt
//输出 6