设为首页 收藏本站
查看: 916|回复: 0

8.10-8.13 shell特殊符号

[复制链接]

尚未签到

发表于 2018-8-21 11:07:22 | 显示全部楼层 |阅读模式
  8.10 shell特殊符号cut命令
  特殊符号(上):
  1.* 代表零个或多个任意字符。

  2.? 只代表一个任意的字符(不管是数字还是字母,只要是一个都能匹配出来。)

  3.# 这个符号在linux中表示注释说明的意思,即 # 后面的内容linux忽略掉。

  4.\ 脱意字符,将后面的特殊符号(例如”*” )还原为普通字符。

  5.| 管道符,它的作用在于将符号前面命令的结果丢给符号后面的命令。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等。

  wc -l 用来计算一个文档有多少行。
  命令 : cut:
  用来截取某一个字段
  语法: cut -d '分隔字符' [-cf] n 这里的n是数字
  -d :后面跟分隔字符,分隔字符要用单引号括起来
  -c :后面接的是第几个字符
  -f :后面接的是第几个区块

  -d 后面跟分隔字符,这里使用冒号作为分割字符,-f 1 就是截取第一段,-f和1之间的空格可有可无。

  -c 后面可以是1个数字n,也可以是一个区间n1-n2,还可以是多个数字n1,n2,n3

  8.11 sort_wc_uniq命令
  命令 : sort
  sort 用做排序
  语法: sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
  -t 分隔符 :作用跟cut的-d一个意思
  -n :使用纯数字排序
  -r :反向排序
  -u :去重复
  -kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

  如果sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  -t 后面跟分隔符,-k后面跟数字,表示对第几个区域的字符串排序,-n 则表示使用纯数字排序

  -k3,5 表示从第3到第5区域间的字符串排序,-r表示反向排序
  命令 : wc
  用于统计文档的行数、字符数、词数,常用的选项为:
  -l :统计行数
  -m :统计字符数
  -w :统计词数

  wc 不跟任何选项,直接跟文档,则会把行数、词数、字符数依次输出。
  命令 : uniq
  去重复的行,阿铭最常用的选项只有一个:
  -c :统计重复的行数,并把行数写在前面

  把下面的内容写入testb.txt, 保存。

  使用uniq 的前提是需要先给文件排序,否则不管用。

  8.12 tee_tr_split命令
  命令 : tee
  后跟文件名,类似与重定向 “>”, 但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。

  tee 常用于管道符 “|” 后。
  命令 : tr
  替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:
  -d :删除某个字符,-d 后面跟要删除的字符
  -s :把重复的字符去掉
  最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’

  当然替换一个字符也是可以的。

  不过替换、删除以及去重复都是针对一个字符来讲的,有一定局限性。如果是针对一个字符串就不再管用了,所以建议只需简单了解这个tr即可,还有更多其他可以实现针对字符串操作的工具。
  命令 : split
  切割文档,常用选项:
  -b :依据大小来分割文档,单位为byte

  如果split不指定目标文件名,则会以xaa xab... 这样的文件名来存取切割后的文件。当然我们也可以指定目标文件名:

  -l :依据行数来分割文档

  8.13 shell特殊符号下
  特殊符号(上):
  1.$ 除了用于变量前面的标识符外,还有一个妙用,就是和 ‘!’ 结合起来使用。

  ‘!$’ 表示上条命中中最后一个变量(总之就是上条命令中最后出现的那个东西)例如上边命令最后是testb.txt那么在当前命令下输入!$则代表testb.txt.
  2.; : 分号。平时我们都是在一行中敲一个命令,然后回车就运行了,那么想在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个 ”;” 了。

  3.~ : 用户的家目录,如果是root则是 /root ,普通用户则是 /home/username

  4.& : 如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况。

  5.>, >>, 2>, 2>> 前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>

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

  7.&& 与 ||
  在上面刚刚提到了分号,用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&” 和 “||”,下面把几种情况全列出:

  •   command1 ; command2
  •   command1 && command2
  •   command1 || command2
  使用 ”;” 时,不管command1是否执行成功都会执行command2;
  使用 “&&” 时,只有command1执行成功后,command2才会执行,否则command2不执行;
  使用 “||” 时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。
  在做实验前,我们想把所有的 test* 删除掉,可是删除的时候,却提示说权限不够,下面是排除问题的过程:

  接下来通过做实验来说明 “&&” 与 “||” 这两个特殊符号的作用:

  扩展
  关于PROMPT_COMMAND环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html
  source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
  Linux特殊符号大全http://ask.apelearn.com/question/7720
  sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-554631-1-1.html 上篇帖子: shell--1、第一个shell脚本 下篇帖子: 推荐运维shell命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表