Shell命令学习笔记

  1. tr 替换字符

简单示例: tr 'A' 'a' < file.txt

把每一个A字符替换为a字符。tr命令只能用于单个字符的替换,如果写成:

tr 'ABC' 'abc' < file.txt

则表示分别把A,B,C字符替换为a,b,c,而不是把字符串ABC替换为abc,字符串的替换需要用到sed命令,稍候会有介绍。

  2. grep 字符串查找

简单示例 :grep world file.txt

在输入文件或这标准输入中查找含有匹配字符串(此处是world)的行,并显示改行。

用grep处理后的结果往往会成为后续处理的输入,所以可以用管道进行连接:

grep world file.txt | wc -l

wc -l表示统计行数,上述命令表示统计file.txt文件中含有world字符串的行数。

上述命令等于 grep -c world file.txt

匹配多个条件,条件之间为或关系:

grep 'a\|b' file.txt

查找file.txt文件中所有含有a或者b的行

如果需要显示不匹配模式的行,则只需要加-v 选项。

  3. sed(Stream Editor),流编辑器,一般用于执行文本替换。

Sed是以批处理而不是交互的方式来编辑文件,sed并不会修改源文件,只会把修改的结果发送到标准输出或者写入另外一个文件。

简单示例:sed 's/world/hadoop/' < file.txt

把每行中的第一个world替换成hadoop。

命令中引号内开头的s表示要执行替换,sed的用途很多,但是一般用于文本替换。

主要选项:

-e 当需要有多个不同的替换时,每个替换命令必须以-e开头:sed -e 's/world/hadoop/' -e 's/hello/hallo/' < file.txt

-f 当命令比较复杂时,可以把sed命令写入一个脚本文件(文件中的命令不要加单引号),然后执行sed命令时只需用-f指向该脚本文件即可:sed -f sed.txt < file.txt

-n 默认sed会把源文件的修改结果发送到标准输出(无论是否经过替换,都会发送),选项-n关闭该功能。-n一般和p组合使用,表示只打印替换过的行,其余的行不打印:sed -n 's/world/hadoop/p' < file.txt

sed命令除了可以以p结尾之外,还可以以g结尾: sed 's/world/hadoop/g',表示全局替换,亦即对每行中所有匹配的文本进行替换,而不是仅仅替换第一个。

sed命令以数字结尾表示替换每行的第n个匹配字符串: sed 's/world/hadoop/2'

应用:

删除文本中所有空行:sed '/^$/d' file.txt

 4. cut 选定字段

cut用来剪下文本文件里指定的字段,字段是指以定界符分隔的字符串,常见的分隔符有空格,制表符以及冒号。

简单示例:

cut -d : -f 1,5 /etc/passwd

剪取/etc/passwd文件的第1,5个字段(字段从1而不是0开始标号),定界符为冒号。

cut -f 1-5 file

剪取第一到第五个字段

cut -f 1- file

剪取第一个到最后一个字段

  5. sort  排序工具

sort将输入的每行看做一条记录,每条记录由多个字段组成,字段间以空白字符为间隔。

简单示例:

sort -t: -k1,1 /etc/passwd

以:为间隔符,以第一个字段为排序字段对文件中的记录进行排序

可以制定排序键值字段的类型,比如:

sort -t: -k1,1nr /etc/passwd

n是指把排序字段当做数值而不是字符串进行比较,如果指定了n,则2排在10前面,否则10排在2前面。

r是指逆序

其他常用的的排序键值字段类型为:

b 忽略开头的空白

f 不区分大小写

另外,如果k后只写了一个数字,比如-k2,则意味着排序键值为第二个字段及其以后的所有字段,而不仅仅是第二个字段,如果只想用第二个字段作为排序键值,则应该使用-k2,2。

当出现多个-k选项时,意味着首先用第一个k选项指定的键值进行排序,然后对第一个键值相同的一组记录使用第二个键值排序,以此类推。

最后,sort的排序是不稳定的。

  6. wc WordCount工具

wc用来进行计数:

wc -c file.txt 统计字节数

wc -w file.txt 统计单词数

wc -l file.txt 统计行数

如果不指定任何选项,则是依次输出行数,单词数,字节数。

  7. head tail  取得文件开头或者结尾数行

head -n file.txt 输出文件的前n行

tail -n file.txt  输出文件的后n行

tail -n -f file.txt  输出文件的后n行,在文件有新的数据加入时显示新的数据(对查看log文件非常有用)

  8. Uniq 删除重复

用例子说明,设文件file.txt内容为:

a 1

b 1

c 2

d 2

e 3

则执行uniq -f 1 file.txt的结果为

a 1

c 2

e 3

执行uniq -u -f 1 file.txt的结果为

e 3

  9. split 切分文件

split -l 100 file.txt 把文件file.txt按照100行为单位切分成数个文件,切分后的文件命名为xaa,xab,...

split -b 200k file.txt 把文件file.txt按照200KB为单位进行切分,切分后的文件命名为xaa,xab,...

参考文献:

[1] Shell脚本学习指南

Shell命令学习笔记相关推荐

  1. 小白学习shell命令---自学笔记

    Linux系统介绍. 什么是操作系统 首先,操作系统是一个软件,控制计算机整体运行的系统软件.可以管理计算机的硬件与软件资源.提供用户使用计算机的接口;提供了软件运行的环境.常用的操作系统有windo ...

  2. shell入门学习笔记-12-命令详解: echo与printf

    系列目录与参考文献传送门: shell入门学习笔记-序章 命令详解 admindeMacBook-Pro:myshell admin$ type cd cd is a shell builtin ad ...

  3. window的dos命令学习笔记 七

    文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...

  4. SHELL编程学习笔记

    SHELL编程学习笔记 本文描述unix shell的各种应用实例,根据查阅资料和自我总结,作为自己今后复习的模板.本文搜集整理常用的shell应用实例,以例子详述unixshell部分命令的使用,着 ...

  5. shell入门学习笔记-15-命令详解: 三剑客之一awk-分支语句、数组

    系列目录与参考文献传送门: shell入门学习笔记-序章 awk分支控制 if admindeMacBook-Pro:~ admin$ seq 5 |awk '{if($0%2) print $0}' ...

  6. window的dos命令学习笔记 一

    文章目录 说明: 1.学习dos命令的起源: 统统删除bat脚本 一.dos历史学习笔记(后期整合到这里,嘿嘿,加油) 一.一些常用的批处理命令: 0.学习小技巧: 1.什么是批处理 2.echo ( ...

  7. Linux命令学习笔记

    Linux命令学习笔记 1 前言 1.1 系统版本 1.2 终端切换 1.3 快捷键 1.4 帮助文档 1.5 关机重启 2 目录命令 2.1 当前目录 pwd 2.2 切换目录 cd 2.3 查看目 ...

  8. 《Linux Shell编程学习笔记之一》

    <Linux Shell编程学习笔记之一> 前言 由于自己一直在Windows上面编程,用linux用的比较少,学习linux还是本科大二学的一点点知识.因此自己就准备花点时间来熟悉下li ...

  9. Linux Shell编程学习笔记(4)

    Linux Shell编程学习笔记(2015-7-20) 分类:linux shell   今天学习了Linux Shell中的控制结构.其实大多数语言的控制结构这一块都是基本类似的,有了C语言的基础 ...

  10. Linux Shell编程学习笔记(2)

    Linux Shell编程学习笔记(2015-7-12) 分类:linux shell Shell变量 一:关于Shell变量   Shell是一种弱类型的语言,变量存储的一切值都是字符串.Shell ...

最新文章

  1. 搞懂单链表常见面试题
  2. 使用JSONP,jQuery的ajax跨域获取json数据
  3. oracleDBA-D1
  4. Nacos配置中心-多配置文件加载
  5. python的加减乘除运算_python实现四则运算
  6. 记事本之修改非txt文档
  7. 获取当前网页的绝对URL地址
  8. USB杀手上Indigogo众筹 可以毁坏电脑USB接口
  9. 《Javascript秘密花园》学习笔记(下)
  10. 在GitHub中上传本地项目
  11. unity怪物攻击玩家减血_Unity-塔防游戏之怪物波次简单算法
  12. 程序员必修课-颈椎问题的预防
  13. 惊呆了!我用 Python 可视化分析和预测了 2022 年 FIFA世界杯
  14. 信号完整性之眼图(eye)理解(一)
  15. 飞扬的小鸟java分析_刷题总结——飞扬的小鸟(NOIP2014提高组)
  16. PIX Moving x 宝马 | DIGITAL PLANT
  17. EEGlab导入.mat文件
  18. web前端入门到实战:HTML5实现首页动态视频背景
  19. 世界著名音乐家-按出生年月排序
  20. 作品合集的封面应该如何优化,作品合集封面如何制作

热门文章

  1. 批量导出数据和全部导出到Excel(详细)和mybatis 中 Foreach的用法
  2. uni-app官方教程学习手记 1
  3. 鸡蛋究竟宜不宜生吃——看阿里云计算怎么破?
  4. Centos硬盘IO性能检测命令iostat[转]
  5. Hyper-V 之04 SCVMM 2012 R2安装
  6. 【漫画】兔子,胡萝卜和屎
  7. 配置TOMCAT和IIS协同工作
  8. css3 切换贞动画的效果,仿gif效果
  9. java-循环变量定义问题
  10. UVALive 5760 Alice and Bob