shell 有时候会用三剑客结合正则表达式来处理文本  sed cut行  awk列,对一行中的英文,数字筛选,匹配,删除,替换,

文章目录

  • 删除文本中指定行的字母
  • 输出一句英文中长度小于6的单词
  • 根据规律计算数字

删除文本中指定行的字母

需求:
1.将文本test.txt(共10行)中前5行中包含字母的行删除
2.将6-10行中的字母删除

脚本思路:
过滤出前5行,将包含字母的行删除,输出满足需求1的结果,去掉前5行,将剩余的行中(6-10行)的字母去掉,输出满足需求2的结果

#!/bin/bash
#过滤前5行,删除包含字母的行
sed -n '1,5'p test.txt |sed '/[a-zA-Z]/d'
#删除前5行,将剩余行(6-10行)中的字母去掉
sed '1,5'd test.txt |sed 's/[a-zA-Z]//g'

输出一句英文中长度小于6的单词

需求:
计算一句英文中所有单词的长度,输出长度小于6的单词

示例:
include all files from the config-test directory.

脚本思路:
通过awk -F参数指定分隔符(空格、横杠、点)分割出每个单词,切割后一共有9段(最后的点作为分隔符的情况下,这句话会和结尾隐藏的结束符$被分隔开,所以8个单词+1个结束符一共9段),循环遍历前8段,并计算长度,删除长度小于6的单词

#!/bin/bash
n="include all files from the config-test directory."
#计算分隔后的段数
s=`echo $n|awk -F '[ +-.]' '{print NF}'`
#循环计算前8段的长度
for ((i=1;i<$s;i++))
dol=`echo $n|awk -F '[ +-.]' -v j=$i '{print $j}'|wc -L`#输出每段长度小于6的单词if [ $l -lt 6 ]thenecho $n|awk -F '[ +-.]' -v j=$i '{print $j}'fi
done

注意:awk打印指定的段需要使用$符号,但是在脚本中print不能直接打印变量i,因为要打印的话写法为{ print $$i},这样会出错,所以先把$i的值传给变量j,print直接打印$j即可打印指定的段

执行结果:

[root@linux shell]# sh test.sh
all
files
from
the
test

根据规律计算数字

需求:
有一组数字:10、31、53、77、105、141,找到规律使用shell脚本输出后面10个数字

脚本思路:

前一位数与后一位数的差值:
31-10=21
53-31=22
77-53=24
105-77=28
141-105=36

差值每次递增1,2,4,8(2的0,1,2,3次方)

用x表示数字:10、31、53、77、105、141
用y表示x的差值:21、22、24、28、36
用z表示y的差值:1、2、4、8

#!/bin/bash
x=10
y=21
for i in `seq 0 15`
doecho $xx=$[$x+$y]z=$[2**$i]y=$[$y+$z]
done

执行结果:

[root@linux shell]# sh test.sh
10
31
53
77
105
141
193
277
425
701
1233
2277
4345
8461
16673
33077

shell脚本:删除文本中的字母、找单词、筛选,匹配,删除,替换相关推荐

  1. shell脚本修改文本中匹配行之前的行的方法

    原创文件,欢迎阅读,禁止转载. 例子中是把 finish 前一行的 "yes" 改成 "YES" 有一个方法就是利用sed+awk一起来完成. zjk@zjk: ...

  2. shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)

    From: http://churuimin425.blog.163.com/blog/static/341298772012230112956712/ 删除文本中的重复行(sort+uniq/awk ...

  3. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  4. shell 批量提取文本中字符

    shell 批量提取文本中字符 利用awk提取文本中的字符串,亲测有效 1.创建txt文件的方法 (1)利用vim编辑 vi系列编辑器有两种分别是vi 和vim ,建议使用vim ,vim编辑器更方便 ...

  5. 【java】统计英文文本中某些字母出现的次数

    如何统计英文文本中某些字母出现的次数 public class Java_3 {public static void main(String[] args) {String text = " ...

  6. 删除文本中重复的单词

    在这#encoding=gbk 声明字符类型为gbk,声明前后不能有空格,否则会出错 '''删除文本中重复的单词''' with open('真题词汇--英语一.txt','r') as file:f ...

  7. C语言中删除字符串中一个字母,C程序删除字符串中除字母之外的所有字符

    C程序删除字符串中除字母之外的所有字符 在此示例中,您将学习从用户输入的字符串中删除除字母之外的所有字符. 要理解此示例,您应该了解以下C语言编程主题: 删除字符串中除字母之外的字符#include ...

  8. 编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按

    编写程序统计从键盘输入的一行文本中各个字母的个数. 输入以回车键结束. 不区分大小写,大写字母与相应的小写字母按照同一个字母看待. 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按 ...

  9. 【JAVA】文本处理(1)—删除文本中的空白行

    一.前言 本次学习应用于文本处理方面,主要的功能是为了实现删除文本中的空白行,便于我们阅读和储存. java.io包为我们提供了相关的API,实现了对所有外部系统的输入输出操作,这就是我们这章所要学习 ...

最新文章

  1. 核苷酸pi值计算方法
  2. Linux基础篇之文本、数据流处理命令(sed uniq grep awk wc)
  3. linux中用户识别码,C语言中设置用户识别码的相关函数的简单讲解
  4. (王道408考研操作系统)第三章内存管理-第一节1:内存基础知识、程序编译运行原理
  5. ASP.Net新手项目经验谈
  6. Linux系统如何创建和挂载XFS文件系统
  7. (翻译)《介绍 GENEVA Beta 1 白皮书》(3)
  8. 微信小程序蓝牙ibeacon_微信小程序的新接口 – 蓝牙
  9. Jmeter数据库连接(MYSQL)
  10. 台式计算机操作系统的安装,Win10X电脑操作系统可以装在台式机吗?
  11. 计算机网络应用最简单的,计算机网络的基础知识和简单应用.ppt
  12. java 百家姓_java判断姓是否合格 百家姓
  13. oracle中取月初,月末,季初,季末及年初,年末时间
  14. OSChina 周三乱弹 —— 啪啪啪是敲键盘的声音
  15. 开始菜单找不到anaconda,如何做?
  16. 如何使用phpunit运行单一测试方法?
  17. python3打开文件的代码_Python读写文件的代码示例
  18. 基于python的随机森林回归实现_从零实现回归随机森林
  19. 如何在editplus中配置ctags?
  20. EventLoop 事件循环

热门文章

  1. 【线上直播】微生物组学数据分析与挖掘专题会议
  2. java小组坦克大战游戏开发文档开发日志_java实现坦克大战游戏
  3. ios获取磁力计信息
  4. Android Audio 2: Audio相关术语
  5. python 小程序
  6. catkin_make编译时fatal error: ###_msgs/***.h: 没有那个文件或目录
  7. 自己留着用的 .net 图片水印 方法
  8. 网络推广50种方法必看
  9. 【键盘开箱】B.FRIENDit壁虎忍者RF1430K 2.4G无线键盘,满足办公室安静需求的无线键盘!
  10. 圆圈中最后剩下的数字(简单)