Linux _ Day8 Shell编程之字符截取命令
一、字符截取命令
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编程之字符截取命令相关推荐
- Shell编程——字符截取命令
字符截取命令 一.cut 格式: cut [选项] 文件名 参数: -f 列号: 提取第几列 -d 分隔符: 按照指定分隔符分割列 我们来演示一下,我们先建立一个文件,student.txt: ID ...
- 《Linux与unix Shell编程指南》 总结
<Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...
- linux 中输入bash,Linux上Bash Shell编程
Linux下Bash Shell编程 Bash Shell Programming in Linux Linux下Bash Shell编程 Bash what? 进阶的内容是什么? Okay, I g ...
- shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...
Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...
- linux的shell编程课设,linux课程设计-shell编程.doc
linux课程设计-shell编程.doc 还剩 18页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: fido ...
- 2008年度LINUX与UNIX SHELL编程指北系列大片
2008年度LINUX与UNIX SHELL编程 指北 系列大片 前言:这个世界是公平的,机会是平等的,学习的机会人人都有,只要你有不甘平庸的上进之心,定会成功! 主演:rootman rootman ...
- awk截取字符命令_bash中的字符截取命令cut和awk
grep也是字符截取命令(本笔记在查找命令中),是从文件中截取符合条件的行,其他常见的字符截取命令还有: 一.cut列提取命令:cut [选项] 文件名 -f m[,n]:指定提取第m列或第m到第n列 ...
- 基于Linux的bash/shell编程基础
目录 第一章 shell入门 1.什么是shell 2.shell入门 3,变量的定义和使用 4.接收用户输入(重点) 5.条件判断语句 6.运算符 6.1.算数运算符 6.2.关系运算符 6.3.逻 ...
- [No000014A]Linux简介与shell编程
Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避 ...
- Linux系统命令与Shell编程
第1章 linux简介 1.linux系统主要特点 免费开源.Linux是一款完全免费的操作系统,任何人都可以从网络上下载到它的源代码,并可以根据自己的需求进行定制化的开发,而且没有版权限制. 模块化 ...
最新文章
- c语言 memset 段错误,段错误之memset对类对象的误用
- 搭建iscsi存储系统
- rocketmq 消费者不能调用其他服务_Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务...
- poj3206(bfs+最小生成树)
- php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?
- SpringBoot中如何实现全链路调用日志跟踪?这方法才优雅!
- 此刻心情--我为什么不找女朋友
- 小甲鱼C语言单链表通讯录作业
- 枕头里面加进这些小宝贝能治高血压!快告知你父母~
- 达梦数据库的服务启动
- python docx 合并文档 图片_python玩转pdf全攻略
- 使用xadmin搜索search_fields报错:Related Field got invalid lookup: icontains
- 佳能扫描仪按下按钮后自动打开phtoshop怎么办
- pmp中ram和raci的区别_【PMP考前冲刺】知识点大全(四)
- 设为首页,收藏本站写法
- 写给女朋友的3D旋转相册
- 算法-大作业-圆排列问题
- cfa三级真题和mock_cfa mock和真题哪个难(cfa mock和真题差别)
- Android MediaPlayer源码分析
- QT error: LNK2019: 无法解析的外部符号 __imp__SendMessageW@ 类型的错误 以及 pragma comment 的作用(用法)
热门文章
- python制图一元迭代函数_Python中 生成器、迭代器、闭包、装饰器、元类实例分析...
- mybatis mysql触发器_MyBatis创建Oracle触发器
- python复杂非线性方程_python – 如何解决Sympy中的非线性方程?
- php 多选按钮,单选和多选按钮如何给图片加样式
- 关于python的文章_关于python的一篇介绍文章
- ideahtml里面没有提示_微信聊天时提示请注意核实对方身份谨防诈骗什么原因?怎么解决?...
- 【UVA524】Prime Ring Problem(素数环--递归回溯+全局变量的一个小坑点---水题)
- log4net配置mysql_使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】...
- TSAP(1) : DateTimes
- 容器技术Docker K8s 3 容器技术基础-Docker