1.正则表达式

^

行起始标志

$

行尾标记

.

匹配任意一个字符

[ ]

匹配包含在[字符]之中的任意一个字符,coo[kl]匹配cook或cool

[^]

匹配除[^字符]的任意一个字符

[-]

匹配[]中范围内任意一个字符

?

匹配之前的项一次或0次

+

匹配之前的项一次或多次

*

匹配之前的项0次或多次

()

创建一个用于匹配的子串

{n}

匹配之前的项n次

{n,m}

指定之前的项所必须匹配的最小次数和最大次数

|

交替-匹配|两边的任意一项

\

转义符可以将上面的符号转义

2.grep

(1)搜索包含特定模式的文本行

[root@cai tmp]# cat .txt
this is a test2 [root@cai tmp]# grep .txt 也可以对多个文件进行搜索:grep .txt .txt .txt
使用正则表达式必须使用egrep

(2)要打印除某行之外所有行

[root@cai tmp]# grep -v  .txt
this is a test2

(3)统计文本或文本中包含匹配字符串的行数

[root@cai tmp]# grep -c  .txt

(4)打印包含匹配字符串的行数

[root@cai tmp]# grep  -n .txt
:

(5)搜索多个文件并找出匹配文本位于哪个文件中

[root@cai tmp]# grep -l  .txt .txt
.txt
.txt

(6)如果进行递归查询,可以使用

grep “text” . -R -n

(7)忽视样式中的大小写(grep -i pattern file)

(8)用grep匹配多个样式

grep -e “pattern1” -e “pattern2”

(9)在grep搜索中指定或排除文件

grep “main()” . -r --exclude “readne”

(10)打印出匹配文本之前或之后的行

要打印匹配某个结果之后的3行,可以使用-A选项

[root@cai tmp]# seq |grep  -A 

要打印匹配某个结果之前的3行,可以使用-B选项

[root@cai tmp]# seq |grep  -B 

要打印匹配某个结果之前以及之后的3行,使用-C选项
[root@cai tmp]# seq |grep -C

3.用cut按列切分文本

cut -f , filename

4.sed

()sed可以替换给定文本中的字符串
sed ‘s/pattern/replace_string’ file
()在默认情况下,sed只会打印替换后的文本,要想保留同时更改,用-i选项
sed -i ‘s/pattern/replace_string’ file
()如果想替换所有内容,在结尾加上参数g
sed ‘s/pattern/replace_string/g’ file
()移除空白行
sed ‘ /^$/d’ file
()直接在文件中进行替换
sed ‘s/PATTERN/replacement’ -i filename\
()组合多个表达式
sed ‘expression’ | sed ‘expression’
=sed ‘expression;expression’
=sed -e ‘expression’ -e ‘expression’

5.awk

脚本基本结构如下所示:
awk ‘BEGIN{ print “start” } pattern {commands} END{print “end” } ’ file
awk ‘BEGIN {statements} {statements} END { end statements}’

6.统计特定文件中的词频

#!/bin/bash
#用途:计算文件中单词的词频 if [ $# -ne ];
then
echo "usage:$0 filename";
exit -
fi filename=$ egrep -o "\b[[:alpha:]]+\b" $filename | \ awk '{ count[$0]++ }
END{ printf("%-14s%s\n","word","count");
for(ind in count)
{ printf("%-14s%d\n",ind,count[ind]) ; }
}'
~
[root@cai shell]# sh word_freq.sh /tmp/.txt
word count
a
this
is

7.按列合并多个文件(paste)

[root@cai tmp]# paste .txt .txt
this is a test2 cairui
xijinpng
aiyinsitan

8.打印文件或行中的第n个单词或列

下面打印第5列
awk ‘{ print $ }’ filename

9.打印行或样式之间的文本

(1)[root@cai tmp]# seq 100|awk 'NR==4,NR==8'

(2)4awk ‘NR==M,NR==N’ filename

5

6

7

8

Shell-4-让文本飞的更多相关文章

  1. Linux Shell 自动化之让文本飞

    Linux Shell 自动化之让文本飞 一.前言: ​ 作者之前在一家 IDC 从事运维兼职工作,后来因某些原因辞职开始 Python 爬虫数据分析.因为这些经历以及后续时间积累下的经验,发现好像自 ...

  2. shell脚本--显示文本内容

    shell脚本显示文本内容及相关的常用命令有cat.more.less.head.tail.nl 首先是cat,cat最常用的就是一次性显示文件的所有内容,如果一个文件的内容很多的话,那么就不是很方便 ...

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

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

  4. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  5. shell 命令合并文本

    之前想把代码打印出来看来着,后来合并完之后放在word里发现有2000多页,然后放弃了~anyway,这个命令还是挺有用的. 比如我有文本a001.dat, a002.dat, a003.dat .. ...

  6. Shell命令之文本操作

    前言 在Linux中,文本处理操作是最常见的,应用非常广泛,如果能熟练掌握,可以大大提高开发效率. awk/sed/grep是文本操作领域的“三剑客”,学会了这3个命令就可以应对绝大多数文本处理场景. ...

  7. shell命令技巧——文本去重并保持原有顺序

    简单来说,这个技巧相应的是例如以下一种场景 假设有文本例如以下 cccc aaaa bbbb dddd bbbb cccc aaaa 如今须要对它进行去重处理.这个非常easy,sort -u就能够搞 ...

  8. Shell正则表达式和文本处理工具

    作业一:整理正则表达式博客 一.什么是正则 正则就是用一些具有特殊含义的符号组合而成(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 通配符是由shell解释得. ...

  9. shell编程之文本与日志过滤

    1:grep命令: grep -v  "char"  file_name 匹配不包括"char"的文本 grep -n -w "char" ...

随机推荐

  1. MySQL mysqldump备份与恢复

    1 用户权限 grant select,RELOAD,PROCESS,SUPER, REPLICATION CLIENT ON *.* TO 'bak'@'192.168.%' IDENTIFIED ...

  2. Java学习之SpringMVC零配置实践

    概述:本实践主要是对SpringMVC的主要功能做了一个大概的体验,将原来的SpringMVC的大量配置改成用SpringBoot进行集成,做到了零XML配置,本次实践分为两个部分,一部分为基本功能实 ...

  3. 2007.1.1 string.Format

    String.Format举例(C#) stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0 stringst ...

  4. 第五章 深入class文件结构(待续)

    JVM指令集简介 class文件头的表示形式 常量池 类信息 Fields和Methods定义 类属性描述 Javap生成的class文件结构

  5. [vijos1246]文科生的悲哀(二) 动态规划

    背景 化学不及格的Matrix67无奈选择了文科.他必须硬着头皮艰难地进行着文科的学习. 描述 这学期的政治.历史和地理课本各有n章.每一科的教学必须按章节从前往后依次进行.若干章政治.若干章历史和若 ...

  6. How to Enabling and Diabling VxDMP devices for use with Oracle ASM

    Enable DMP support for ASM to make DMP devices visible to ASM as available disks To make DMP devices ...

  7. docker 笔记(4) Dockerfile 常用的指令

    下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM指定 base 镜像. MAINTAINER设置镜像的作者,可以是任意字符串. COPY将文件从 build ...

  8. 最全SDWebImage-3.8版本源码阅读详解

    一.前言 SDWebImage,非常友好的网络图片加载第三方框架,在GitHub中已经获得了15000++的star,链接地址:https://github.com/rs/SDWebImage 本人分 ...

  9. 8-EasyNetQ之Send & Receive

    鉴于Publish/Subsrcibe和Request/Response模式是位置透明的,在这个方面,你不需要去指定消息的消费者具体所处的位置,Send/Receive模式是特别针对通过命名队列来设计 ...

  10. 7-EasyNetQ之Request & Response

    EasyNetQ也支持Request/Response这种方式的消息模式.这种方式很容易在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应.和传统的R ...