一、字符截取命令

1、cut 字段截取命令

[root@localhost ~]# cut  [选项]  文件名

选项:

  -f   列号:  提取第几列

  -d  分隔符:   按照指定分隔符分割列(默认分隔符是制表符Tab键)

cut 命令的局限性

df  -h  |  cut -d  " "  -f  1,3

# df 命令,查看分区的使用状况

因为文件内容中的分隔符是空格,cut命令是能截取第一行,他第三列是空格,不是数据。

2、printf 命令

printf  '输出类型 输出格式'  输出内容

输出类型:

  %ns:  输出字符串。n 是数字,指代输出几个字符

  %ni:   输出整数。n 是数字,指代输出几个数字

  %m.nf:    输出浮点数。m和n是数字,指代输出的整数位和小数位数

         如%8.2f 代表共输出8位数,其中2位是小数,6位是整数。

输出格式:

  \a  :  输出警告声音

  \b  :  输出退格键,也就是Backspace键

  \f   :  清除屏幕

  \n  :  换行

  \r   :  回车,也就是Enter键

  \t   :  水平输出退格键,也就是Tab键

  \v   :  水平输出退格键,也就是Tab键

[root@localhost ~]# printf  %s  1  2  3  4  5  6

[root@localhost ~]# printf  %s  %s  %s  1  2  3  4  5  6

[root@localhost ~]# printf  '%s  %s  %s '  1  2  3  4  5  6

[root@localhost ~]# printf  '%s  %s  %s\n '   1  2  3  4  5  6

注:单引号不能省略。

[root@localhost ~]# printf  '%s'  $(cat  student.txt)

# 不调整输出格式

[root@localhost ~]# printf  '%s\t  %s\t  %s\t  %s\n'   $(cat  student.txt)

# 调整格式输出

注:printf 不支持数据流

3、awk 命令

[root@localhost ~]# awk  ' 条件1{动作1}  条件2{动作2}……'   文件名

条件(Patterm):

  一般使用关系表达式作为条件

  x > 10 判断变量 x 是否大于10

  x >= 10 大于等于

  x <= 10 大于等于

动作(Action):(高级功能,暂时不学)

  格式化输出

  流程控制语句

[root@localhost ~]# awk ' {printf  $2  "\t"  $4  "\n" }'  student.txt

注:有条件就先判断条件再执行动作,没有条件就位每一行都执行同样的动作

print 命令,相当于printf 省略后面的 \n

注:awk  命令,先读取数据,然后再按照条件截取。

BEGIN (条件命令)

[root@localhost ~]# awk  ‘ BEGIN { print  " This  is  a  transcript " } {print  $2  " \t "  $4  " \n " }’  student.txt

注:只要命令执行之前满足 BEGIN 条件,就答应 print  " This  is  a  transcript

END(条件命令)

[root@localhost ~]# awk  ‘ END { print  " end " } {print  $2  " \t "  $4  " \n " }’  student.txt

FS内置变量

[root@localhost ~]# cat  /etc/passwd  |  grep  "/bin/bash"  |  \awk  'BEGIN  {FS=":"} {print  $1 "\t"  $3  "\n"}'

标准用法:  'BEGIN  {FS=":"}

关系运算符

[root@localhost ~]# cat  student.txt  |  grep  -v  Name  |  \awk  '$4  >=  70' {printf  $2  "\n"}'

字符替换命令 sed 命令

vi 只能修改文件,需要人工输入;sed 替换文件里面的数据,适合脚本使用。

sed 是一种几乎包括在所有UNIX平台(包括 Linux)的轻量级编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

[root@localhost ~]# sed  [选项]  ‘[动作]’  文件名

选项:

  -n  :  一般sed命令会把所有数据都输出到屏幕,如果加入此选项则只会把经过sed 命令处理的行输出到屏幕。

  -e  :  允许对输入数据应用多条sed命令编辑

  -i   :  用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:

  a  :  追加,在当前行后添加一行或多行

  c  :  行替换,用 c 后面的字符串替换原数据行

  i   :  插入,在当前行插入一行或多行。d:删除,删除指定的行

  p  :  打印输出指定的行

  s  :  字串替换,用一个字符串替换另一个字符串。格式为 “行范围 s/ 旧字串 / 新字串 /g” (和vim中的替换格式类似)。

行数据操作

[root@localhost ~]# sed  ‘2p’  student.txt

# 查看文件的第二行

[root@localhost ~]# sed  -n  '2p'  student.txt

[root@localhost ~]# sed  '2d'  student.txt

# 删除第二行的数据,但不修改文件本身

[root@localhost ~]# sed  '2,4d'  student.txt

# 删除第二行到第四行的数据,但不修改文件本身

[root@localhost ~]# sed  '2a cjj like Linux '  student.txt

# 在第二行后面追加一行数据

[root@localhost ~]# sed  '2i cjj like Linux '  student.txt

# 在第二行前面插入一行数据

[root@localhost ~]# sed  '2c cjj like Linux '  student.txt

# 数据替换

字符串替换

[root@localhost ~]# sed  's/ 旧字符串/新字符串/g   文件名

[root@localhost ~]# sed  '3s/60/99/g '  student.txt

# 在第三行中,把60换成99

[root@localhost ~]# sed  -i  '3s/60/99/g '  student.txt

# 确定修改并保存,直接写入文件

注:3s 代表第三行70,s 代表只有一行有要替换的数据70,g 代表有多个70都要替换

[root@localhost ~]# sed  -e  's/fengj/ /g ; s/cang/ /g' sttudent.txt

# -e 表示可以同时执行多条命令,同时把“fengj” 和 "cnag" 替换为空。

二、字符处理命令

1、 排序命令

[root@localhost ~]# sort  [选项]  文件名

选项:

  -f  :  忽略大小写

  -n :  以数值型进行排序,默认使用字符串型排序

  -r  :  反向排序

  -t  :  指定分隔符,默认分隔符是制表符

  -k  “n,m”  :  按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)

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

注:什么都不指定,按照字母顺序排列

[root@localhost ~]# -r  sort  /etc/passwd  (取反)

[root@localhost ~]# sort  -n  -t  ":"  -k  “3,3”  /etc/passwd

# 指定分隔符是“:” 用第三字段开头,第三字段结尾排序,就是只用第三字段排序

注:数字排序加上 -n 否则是按照字符串进行排序

2、统计命令 wc

[root@localhost ~]# wc  [选项]  文件名

选项:

  -l    :  只统计行数

  -w  :  只统计单词数

  -m :  只统计字符数

转载于:https://www.cnblogs.com/chuijingjing/articles/8425283.html

Linux _ Day8 Shell编程之字符截取命令相关推荐

  1. Shell编程——字符截取命令

    字符截取命令 一.cut 格式: cut [选项] 文件名 参数: -f 列号: 提取第几列 -d 分隔符: 按照指定分隔符分割列 我们来演示一下,我们先建立一个文件,student.txt: ID ...

  2. 《Linux与unix Shell编程指南》 总结

    <Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...

  3. linux 中输入bash,Linux上Bash Shell编程

    Linux下Bash Shell编程 Bash Shell Programming in Linux Linux下Bash Shell编程 Bash what? 进阶的内容是什么? Okay, I g ...

  4. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

  5. linux的shell编程课设,linux课程设计-shell编程.doc

    linux课程设计-shell编程.doc 还剩 18页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: fido ...

  6. 2008年度LINUX与UNIX SHELL编程指北系列大片

    2008年度LINUX与UNIX SHELL编程 指北 系列大片 前言:这个世界是公平的,机会是平等的,学习的机会人人都有,只要你有不甘平庸的上进之心,定会成功! 主演:rootman rootman ...

  7. awk截取字符命令_bash中的字符截取命令cut和awk

    grep也是字符截取命令(本笔记在查找命令中),是从文件中截取符合条件的行,其他常见的字符截取命令还有: 一.cut列提取命令:cut [选项] 文件名 -f m[,n]:指定提取第m列或第m到第n列 ...

  8. 基于Linux的bash/shell编程基础

    目录 第一章 shell入门 1.什么是shell 2.shell入门 3,变量的定义和使用 4.接收用户输入(重点) 5.条件判断语句 6.运算符 6.1.算数运算符 6.2.关系运算符 6.3.逻 ...

  9. [No000014A]Linux简介与shell编程

    Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避 ...

  10. Linux系统命令与Shell编程

    第1章 linux简介 1.linux系统主要特点 免费开源.Linux是一款完全免费的操作系统,任何人都可以从网络上下载到它的源代码,并可以根据自己的需求进行定制化的开发,而且没有版权限制. 模块化 ...

最新文章

  1. c语言 memset 段错误,段错误之memset对类对象的误用
  2. 搭建iscsi存储系统
  3. rocketmq 消费者不能调用其他服务_Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务...
  4. poj3206(bfs+最小生成树)
  5. php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?
  6. SpringBoot中如何实现全链路调用日志跟踪?这方法才优雅!
  7. 此刻心情--我为什么不找女朋友
  8. 小甲鱼C语言单链表通讯录作业
  9. 枕头里面加进这些小宝贝能治高血压!快告知你父母~
  10. 达梦数据库的服务启动
  11. python docx 合并文档 图片_python玩转pdf全攻略
  12. 使用xadmin搜索search_fields报错:Related Field got invalid lookup: icontains
  13. 佳能扫描仪按下按钮后自动打开phtoshop怎么办
  14. pmp中ram和raci的区别_【PMP考前冲刺】知识点大全(四)
  15. 设为首页,收藏本站写法
  16. 写给女朋友的3D旋转相册
  17. 算法-大作业-圆排列问题
  18. cfa三级真题和mock_cfa mock和真题哪个难(cfa mock和真题差别)
  19. Android MediaPlayer源码分析
  20. QT error: LNK2019: 无法解析的外部符号 __imp__SendMessageW@ 类型的错误 以及 pragma comment 的作用(用法)

热门文章

  1. python制图一元迭代函数_Python中 生成器、迭代器、闭包、装饰器、元类实例分析...
  2. mybatis mysql触发器_MyBatis创建Oracle触发器
  3. python复杂非线性方程_python – 如何解决Sympy中的非线性方程?
  4. php 多选按钮,单选和多选按钮如何给图片加样式
  5. 关于python的文章_关于python的一篇介绍文章
  6. ideahtml里面没有提示_微信聊天时提示请注意核实对方身份谨防诈骗什么原因?怎么解决?...
  7. 【UVA524】Prime Ring Problem(素数环--递归回溯+全局变量的一个小坑点---水题)
  8. log4net配置mysql_使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】...
  9. TSAP(1) : DateTimes
  10. 容器技术Docker K8s 3 容器技术基础-Docker