Linux基本命令2(正则表达式及grep、sed、awk、cut)

linux基本命令2
正则表达式、grep、sed、awk、cut

0、一些简单的知识

管道 |
linux支持管道,即把前面的命令执行的结果通过管道传输给后面的命令
命令1 | 命令2 | 命令3 …
重定向 > 、>>、<、<<
a、> 将命令结果输出到文件中,如果存在文件则覆盖其中内容。
b、>> 将命令结果输出到文件中,如果存在文件则在末尾添加内容。
c、< 输入重定向 例如常见的 while read line < test.lst 用于读取文件
d、<<here document . 文档终止符。经常用于数据库连接生成日志
e、补充:&>重定向所有输出。2>重定向错误输出。2>>重定向错误输出追加
正则表达式pattern
正则表达式是三个命令经常使用的。

元字符含义
.表示单个字
[ ]匹配任意范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
匹配次数含义
*匹配其前面的字符任意次,包含0次
.*匹配任意长度的任意字符
?匹配其前面的字符0次或者1次
{m,n}匹配其前面的字符至少m次,至多n次
{m,}最少m次,最多不限
{m}出现m次
位置锚定含义
^锚定行首
$锚定行尾
^$空白行

分组引用

1、grep命令

强大的文版搜索工具,能通过正则表达式搜索文件中的内容。
命令基本格式: grep [OPTION]… PATTERN [FILE]…
grep 【选项】 匹配内容 文件…

常用选项:

##grep的常用选项
grep
	-i 忽视字符大小写
	-v 显示没有被模式匹配到的行
	-o 只显示被模式匹配到的部分
	-A n 不仅显示匹配到的那一行,也将后面n行显示出来
	-B n ...也将前面n行显示出来
	-C n ...前后都显示n行
	-n 标识出该列的编号
grep -E 相当于egrep
fgrep 快速搜索,不支持正则表达式

exp:
grep "hello" text.txt	显示出 hello 所在的行的内容

2、sed命令

sed命令是行处理命令。sed命令把要处理的行放到内存中处理,这个内存称为模式空间。使用sed命令默认不编辑源文件,只将需要处理的行进行处理。处理结束后默认将模式空间打印到屏幕上。
命令格式:
sed [options] ‘Address Command’ files…

options:
-n 静默方式,不再显示默认空间中的行。
-i 修改源文件。这个命令会修改源文件。

Address:要处理的位置
1、startline,endline 。开始行,结束行
$表示最后一行,$-1表示倒数第二行
2、/RegExp/ 正则表达式指定的格式。例如/hello/表示以hello开头的行。
3、
/pattern1/,/pattern2/* 第一次被模式匹配到的行到第二次被模式匹配到的行
4、LineNumber 指定的行
5、startline ,+N 从start开始到向后的N行

Command:要处理的命令

d	删除符合条件的行
	sed "1,2d" files 删除files的第一到第二行
	sed "$d" files 删除文件的最后一行
	sed '/^hello/'d files	删除以hello开头的行
s	替换命令 's/pattern/string/修饰符'
	sed 's/book/books/g' file 将file中的book替换为books
	修饰符g s命令默认只替换每行第一个被匹配到的位置。使用g命令用于全局替换
	修饰符Ng	sed 's/book/books/3g' 从第三处匹配开始替换
	修饰符i 忽略大小写
	sed 's/\\\\/\//g'。	将\\替换为/。也可使用'###,$$$,%%%'等定界符进行分割。可以改为's#\\\\#\/#'增加命令可读性
	sed 's#\(love\)able#\1rs#g'	将loveable改为lovers.其中 \1 表示\(love\)匹配到的
	sed "s/$test/hello/g".其中$test是变量。注意使用双引号
p	显示符合条件的行
	sed "3,$" files 显示files的第三行到末尾
a\"string"	在指定的行后面添加文本。a\"string\nstring..." 可以添加多行
i\"string"	在指定的行前面添加文本
r file 将指定的文件file添加到指定的行后面。可以用来合并文件
	sed -i "$r file" files 将file添加到files末尾后面。-i表示修改源文件
	echo "hello" >1.txt
	echo "world" >2.txt
	sed -i '$r 2.txt' 1.txt
	最后输出的文1.txt中包含hello world.(分两行)
w file 将后面的文件添加进file。与r反过来
	sed -i '$w 1.txt' 2.txt 和上面输出结果是一样的
q 退出
sed -n 'p;n' file 打印奇数行
sed -n 'n;p' file 打印偶数行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值