轻松学Linux命令(一)

作者:小虾米 发表时间: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

1、cat ~/Downloads/uv.txt

  • 作用:用于连接文件并打印到标准输出设备上
  • 功能:
    1. 一次显示整个文件 cat filename
    2. 从键盘创建一个文件 cat > filename,只能创建新文件,不能编辑已有文件
    3. 将几个文件合并为一个文件 cat file1 file2 > file
  • 语法格式:cat [-AbeEnstTuv] [--help] [--version] fileName
  • 参数说明:
    • -n 或 --number:由1开始对所有输出的行数编号
    • -b 或 --number-nonblank:和-n相似,空行不编号
    • -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    • -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    • -E 或 --show-ends : 在每行结束处显示$。
    • -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
    • -e : 等价于 -vE。
    • -A, --show-all:等价于 -vET。
    • -e:等价于"-vE"选项;
    • -t:等价于"-vT"选项
  • 实例:

    //把textfile1的档案内容加上行号后输入textfile2这个文件里
    [$~]cat -n textfile1 > textfile2
    
    //创建文件的功能,创建文件后,要以EOF或STOP结束;
    [$~]cat >  test.txt  << EOF   //注:创建test.txt文件;
    > 测试 cat 创建文件,并且为文件输入内容;//注:这是为linuxsir.org.txt文件输入内容;
    > 小虾米测试;//注:这是为linuxsir.org.txt文件输入内容;
    > EOF //注:退出编辑状态
  • 参考资料

  • 相近命令:more、less

2、管道符

"|":就是将两个命令隔开,管道符左边命令的输出就是右边命令的输入,可包含多个管道符。 例:

[$~]ps -ef | grep 'mysql'

[$~]ls -a | grep test | awk "{print $1}" 

3、awk

  • 说明:awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息
  • 语法格式:awk [options] 'commands' filename
  • 参数说明:
    • -F field-separator 或 --field-separator field-separator 指定将文件中每一行分隔成列的分隔符号,默认为空格;field-separator是一个字符串或一个正则表达式
    • -v var=value 或 --asign var=value 赋值一个用户定义变量
    • -f scripfile or --file scriptfile 从脚本文件中读取awk命令
    • 更多参数说明,参考:菜鸟教程-Linux awk 命令
  • commands awk对每一行数据执行的命令
  • 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
  • 参考资料

4、sort

  • 说明:Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序
  • 语法格式: sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
  • 参数说明:

    • -b 忽略每行前面开始出的空格字符。
    • -c 检查文件是否已经按照顺序排序。
    • -u 在输出行中去除重复行
    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    • -f 排序时,将小写字母视为大写字母。
    • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    • -m 将几个排序好的文件进行合并。
    • -M 将前面3个字母依照月份的缩写进行排序。
    • -n 依照数值的大小排序。
    • -o <输出文件> 将排序后的结果存入指定的文件。
    • -r 以相反的顺序来排序。
    • -t <分隔字符> 指定排序时所用的栏位分隔字符。
    • -k 指定排序的列
    • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
    • --help 显示帮助。
    • --version 显示版本信息。
  • 实例:

    //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
  • 参考资料:

5、uniq

  • 说明:Linux uniq命令用于检查及删除文本文件中重复出现的行列。
  • 语法格式: uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
  • 参数说明:

    • -c 或 --count 在每列旁边显示该行重复出现的次数
    • -d 或 --repeated 仅显示重复出现的行列
    • -f<栏位> 或 --skip-fields=<栏位> 忽略比较指定的栏位
    • -s<字符位置> 或 --skip-chars=<字符位置> 忽略比较指定的字符
    • -u 或 --unique 仅显示出一次的行列
    • -w<字符位置> 或 --check-chars=<字符位置> 指定要比较的字符
    • --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

    6、wc

  • 说明:Linux wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据

  • 语法格式:wc [-clw][--help][--version][文件...]

  • 参数说明:

    • -c 或 --bytes或--chars 只显示Bytes数。
    • -l 或 --lines 只显示列数。
    • -w 或 --words 只显示字数。
    • --help 在线帮助。
    • --version 显示版本信息。
  • 实例:

    //默认显示指定文件的行数,字数,字节数
    [$~]wc x.txt
    //输出 6行,18字,64字节
    6 18 64 x.txt 
    
    [$~]wc -l x.txt
    //输出 6

转载请注明来源小虾米的博客

沪ICP备17012897号-1 | Copyright ©2024