Shell-4-让文本飞
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-让文本飞的更多相关文章
- Linux Shell 自动化之让文本飞
Linux Shell 自动化之让文本飞 一.前言: 作者之前在一家 IDC 从事运维兼职工作,后来因某些原因辞职开始 Python 爬虫数据分析.因为这些经历以及后续时间积累下的经验,发现好像自 ...
- shell脚本--显示文本内容
shell脚本显示文本内容及相关的常用命令有cat.more.less.head.tail.nl 首先是cat,cat最常用的就是一次性显示文件的所有内容,如果一个文件的内容很多的话,那么就不是很方便 ...
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
- shell 命令合并文本
之前想把代码打印出来看来着,后来合并完之后放在word里发现有2000多页,然后放弃了~anyway,这个命令还是挺有用的. 比如我有文本a001.dat, a002.dat, a003.dat .. ...
- Shell命令之文本操作
前言 在Linux中,文本处理操作是最常见的,应用非常广泛,如果能熟练掌握,可以大大提高开发效率. awk/sed/grep是文本操作领域的“三剑客”,学会了这3个命令就可以应对绝大多数文本处理场景. ...
- shell命令技巧——文本去重并保持原有顺序
简单来说,这个技巧相应的是例如以下一种场景 假设有文本例如以下 cccc aaaa bbbb dddd bbbb cccc aaaa 如今须要对它进行去重处理.这个非常easy,sort -u就能够搞 ...
- Shell正则表达式和文本处理工具
作业一:整理正则表达式博客 一.什么是正则 正则就是用一些具有特殊含义的符号组合而成(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 通配符是由shell解释得. ...
- shell编程之文本与日志过滤
1:grep命令: grep -v "char" file_name 匹配不包括"char"的文本 grep -n -w "char" ...
随机推荐
- Linux python安装
Linux 安装 Python3.5 1. 准备 操作系统:Red Hat Enterprise Linux Server release 6.5 (Santiago) Python 安装包:Py ...
- 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享
目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- java代码用continue输出奇数——————————
总结:continue用法是:在for,do-while.while循环中 并且,continue的意思是跳出循环的剩余部分,进行下一次循环.不是下一步循环 package com.b; import ...
- L2-004. 这是二叉搜索树吗?(前序转后序递归)
L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...
- HTML 5中的结构元素
1.header:标记头部区域的内容 .footer:标记页脚区域的内容 .section:Web页面中的一块区域 4.article:独立的文章内容区域 5.aside:相关侧边内容或者引文区域 6 ...
- PostgreSQL 数据库角色
数据库角色PostgreSQL使用角色的概念管理数据库访问权限.一个角色可以被看成是一个数据库用户或者是一个数据库用户组,这取决于角色被怎样设置.角色可以拥有数据库对象(例如,表和函数)并且能够把那些 ...
- 通过phpMyAdmin拿webshell
general_log默认为关闭的,root权限开启后,general_log_file会保存所有的查询语句 所以可以开启general_log,然后设置general_log_file为一个php文 ...
- vue实用难点讲解
此篇文章是我基于研究vue文档三遍的基础上,觉得还有点难理解或者难记的知识点总结 列表渲染 1.渲染组件必须加key,并且属性是手动传递给组件的 <my-component v-for=&quo ...
- I/O完成端口(IOCP)
服务器: #include "stdafx.h" #include <winsock2.h> #pragma comment(lib, "ws2_32.lib ...
- Ubuntu下设置VNCServer
Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服 ...