美文网首页
shell特殊符号/cut/sort_wc_uniq/tee_t

shell特殊符号/cut/sort_wc_uniq/tee_t

作者: hch004 | 来源:发表于2018-01-13 08:48 被阅读0次

    8.10 shell特殊符号&cut命令

    特殊符号

    “*” 代表零个或多个字符

    “?” 代表一个字符

    “#” 注释符号

    “\” 脱意符号

    “|” 管道符

    “$” 该符号与“!”合用“!$”表示上一条命令中的最后一个变量

    “;” 分隔符,在一行中运行两个及两个以上的命令时使用

    “~” 用户的家目录(root用户“/root”,普通用户“/home/username”)

    “&” 如果想把一条命令直接放到后台运行的话,可以在命令行加上这个符号(通常用于运行时间非常长的命令)

    “[]” 中括号中间为字符组合,代表中间字符中的任意一个。

    cut命令

    cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

    说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

    语法: cut -d ‘分隔符’ [-cf] n [filename] (这里n是正整数)

    -d:指定分隔符号

    -f:指定第几段

    -c:后面只有一个数字表示截取第几个字符;后面跟一个数字区域,表示截取从几到几(该选项不和d,f共同使用)

    [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1

    root

    bin

    [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2

    root:x

    bin:x

    [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3

    root:x:0

    bin:x:1

    8.11 sort、wc、uniq命令

    sort命令

    sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

    语法: sort [-t 分隔符] [options] [filename]

    Options:

    -t:指定分隔符

    -n:使用纯数字排序(系统默认所有字母为0)

    -r:反向排序

    -u:=unique 去重复

    -kn1,n2:由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序(n1 < n2)

    sort不加任何选项,则从首字符向后,依次以ASCⅡ码值进行比较,最后将它们按升续输出。

    [root@localhost ~]# sort /etc/passwd

    adm:x:3:4:adm:/var/adm:/sbin/nologin

    bin:x:1:1:bin:/bin:/sbin/nologin

    chrony:x:998:996::/var/lib/chrony:/sbin/nologin

    wc命令

    wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数。

    语法: wc [options] [filename]

    Options:

    -l:=line 统计行数

    -m:=member 统计字符数

    -w:=Word 统计词数

    [root@localhost ~]# wc -l 1.txt

    16 1.txt

    说明: wc -m会统计文件内所有字符,包括隐藏的换行符“&”;wc -w是以空格作为分隔符进行词组统计的。

    uniq命令(unique)

    uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用(即:去重复)。

    语法: uniq [options] [filename]

    Options:

    -c:=count 在每列旁边显示该行重复出现的次数

    [root@localhost ~]# uniq 2.txt

    123

    abc 1111,222

    123

    abc

    1

    2

    1

    [root@localhost ~]# sort 2.txt |uniq

    1

    123

    2

    abc

    abc 1111,222

    [root@localhost ~]# sort 2.txt |uniq -c

          3 1

          2 123

          1 2

          1 abc

          1 abc 1111,222

    说明: 直接使用uniq命令,2.txt内容显示并没有变化,使用sort排序后再用uniq命令,重复行被合并,即:在对文件进行去重之前需要先进行排序!

    8.12 tee、tr、split命令

    tee命令

    tee命令用于将数据重定向到文件,会删除文件内原有内容,与“>”不同的是,tee会把定向的文件内容显示出来。

    语法: tee [options] [filename]

    Options:

    -a:向文件中重定向时使用追加模式(=“>>”)

    [root@localhost ~]# sort 2.txt |uniq -c |tee a.txt

          3 1

          2 123

          1 2

          1 abc

          1 abc 1111,222

    [root@localhost ~]# cat a.txt

          3 1

          2 123

          1 2

          1 abc

          1 abc 1111,222

    tr命令

    tr命令可以对来自标准输入的字符进行替换、压缩和删除,它可以将一个字符变成另一个字符,也可以将一组字符变成另一组字符。

    语法: tr [源字符] [目标字符]

    [root@localhost ~]# echo "adminlinux" |tr 'a' 'A'

    Adminlinux

    [root@localhost ~]# echo "adminlinux" |tr 'a-z' 'A-Z'

    ADMINLINUX

    split命令

    split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

    语法: split [options] [filename]

    -b:指定每一输出档案的大小,默认单位为 byte,可自定义单位,如 split -b 100M filename

    -l:指定每一个输出档案的行数多少

    eg1: 指定大小

    [root@hch ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;

    [root@hch test]# split -b 100K a.txt

    [root@hch test]# ls

    a.txt  xaa  xab  xac

    [root@hch test]# rm -f x*

    [root@hch test]# split -b 100K a.txt abc

    [root@hch test]# ls

    abcaa  abcab  abcac  a.txt

    [root@hch test]# rm -f abc*

    eg2: 指定行数

    [root@hch test]# split -l 100 a.txt abc

    [root@hch test]# ls

    8.13 shell特殊符号(下)

    $ 变量前缀,!$组合,正则里面表示行尾

    ;多条命令写到一行,用分号分割

    ~ 用户家目录,后面正则表达式表示匹配符

    & 放到命令后面,会把命令丢到后台

    > >> 正确输出重定向

     2> 2>> 错误输出重定向

     &> 正确错误输出重定向

    [ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]

    命令连接符: “||”、“&&”、“;”

    command1 ; command2 : 不管command1是否执行成功都会执行command2

    command1 && command2 : 只有command1执行成功后才会执行command2

    command1 || command2 : 表示command1执行成功后,command2不执行,否则执行command2

    [root@hch ~]# [ -d hch ] || mkdir hch

    [root@hch ~]# [ -d hch ] && mkdir hch

    mkdir: 无法创建目录"hch": 文件已存在

    [root@hch ~]# [ -d hch ] || mkdir hch

    相关文章

      网友评论

          本文标题:shell特殊符号/cut/sort_wc_uniq/tee_t

          本文链接:https://www.haomeiwen.com/subject/kyoqoxtx.html