Linux三剑客

Linux三剑客

Linux三剑客即是:grep查找、awk切片、sed修改

一、grep

grep用于查看文件中符合条件的字符串

1、常用参数:
	-c 或 --count : 计算符合样式的行数。
    -d <动作> 或 --directories=<动作> : 查找目录
	-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
	-v 或 --revert-match : 显示不包含匹配文本的所有行。
	-i 或 --ignore-case : 忽略字符大小写的差别。
	-o 或 --only-matching : 只显示匹配PATTERN 部分。
	-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
	-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
	-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
	--line-buffered : grep 会缓存一批数据后再输出,使用--line-buffered使grep不缓存数据。
2、示例:

1)查询1.txt下包含a的行:
cat 1.txt —查看1.txt文件内容(查看文件内容的命令还有:less、more、cat、vi、head、tail),
grep ‘a’ 1.txt --col --查找1.txt中a并且高亮显示,可以看出一共4行,
grep -c ‘a’ 1.txt —计算1.txt中包含a的行数,一共4行,输出4。
在这里插入图片描述
2)查询1.txt中包含grep以及前后行
grep -C 1 ‘grep’ 1.txt —使用-C命令,查询包含grep以及前后一行,同理查询前后两行就是grep -C 2 ‘grep’ 1.txt
grep -A 1 ‘grep’ 1.txt —使用-A命令,查询包含grep以及后一行,同理查询后两行就是grep -A 2 ‘grep’ 1.txt
grep -B 1 ‘grep’ 1.txt —使用-B命令,查询包含grep以及前一行,同理查询前两行就是grep -B 2 ‘grep’ 1.txt
在这里插入图片描述
3)查询1.txt中不包含a的行 ------- grep -v ‘a’ 1.txt在这里插入图片描述
4)查询1.txt中包含A、a的内容 — grep -i ‘a’ 1.txt 或者 gerp -i ‘A’ 1.txt在这里插入图片描述
5)查询1.txt中的grep字符串并显示匹配内容 — grep -0 ‘grep’ 1.txt
可以与正则一起使用。
在这里插入图片描述
6)grep的正则表达式 -E 使用扩展正则表达式。
grep -E ‘user=\w{1,7}’ 1.txt — 查询1.txt中:user=文本或数字1到7个,的行内容
grep -E -o ‘user=\w{1,7}’ 1.txt — 查询1.txt中:user=文本或数字1到7个,只显示符合正则的内容。
在这里插入图片描述

二、awk

awk用于处理文本文件、分析文本。

1、常用参数
	-F:指定输入文件折分隔符。
	-v:赋值一个用户定义变量。
	-f :从脚本文件中读取awk命令。
2、awk的内建变量
	$n:前记录的第n个字段,字段间由FS分隔。
	$0:完整的输入记录。
	FS:字段分隔符(默认是空)。
	NF:一条记录的字段数。
	NR:已经独处的记录数,即行号。
	OFS:输入记录分隔符,输出时用指定符合替换分隔符。
	ORS:输出记录分割符。
	RS:记录分割符。
3、两种模式:
	BEGIN:指定处理文本之前需要执行的操作。
	END:指定处理完所有行之后需要执行的操作。
4、示例:

1) awk ‘{print $0}’ test-awk.txt ---- 打印完整的输入记录、文本
awk ‘{print $1}’ test-awk.txt ---- 打印的输入记录、文本的第一行
在这里插入图片描述
2)设置变量
awk -va=linux ‘{print $1,$1a}’ test-awk.txt ---- 设置变量a为Linux
在这里插入图片描述
3)awk ‘BEGIN{FS="#####"}{print $1,$2}’ test-awk1.txt ---- 默认替换分隔符为空格
awk ‘BEGIN{FS="#####";OFS="----"}{print $1,$2}’ test-awk1.txt ---- 分隔符#####变为----
在这里插入图片描述
4)awk ‘BEGIN{RS="#####"}{print $0}’ test-awk1.txt ---- 找到#####分隔符,并把分隔符后面内容在另一行输出
awk ‘BEGIN{ORS="-----"}{print $0}’ test-awk1.txt ----- 把换行符换成-----
在这里插入图片描述
5)NR是指awk正在处理的记录位于文件中的位置(行号)
NF是指awk正在处理的记录包含几个域(字段),这于域分隔符有关,默认为空
在这里插入图片描述
6)awk ‘/e/{print}’ test-awk1.txt ----- 匹配带e的内容
awk -F ‘#####’ ‘$2~/e/{print}’ test-awk1.txt ----- 以#####为分隔符,匹配第二列中包含e的内容
在这里插入图片描述

三、sed

主要作用是查找;新增 删除 和修改替换。

1、常用参数
	-i 表示inplace edit,就地修改文件
	-n 表示仅显示script处理后的结果
	-e 表示运行多次处理
	s 表示替换
	d 表示删除
2、示例
  1. sed -i ‘s#linux#windows#g’ test-awk1.txt ---- 把test-awk1.txt中的Linux改成Windows

sed -i ‘s/^[a-z]*#/test/g’ test-sed.txt ---- 把test-sed.txt中windows#、centos#改成test
在这里插入图片描述
2) sed -n ‘3p’ test-awk1.txt ---- 仅打印第三行
在这里插入图片描述
3) sed -e ‘1d’ -e ‘s#a#A#g’ test-awk.txt ----- 先删除第一行,然后把a替换成A
在这里插入图片描述
sed的其他用法如下:
1、删除行首空格

		sed 's/^[ ]*//g' filename
		sed 's/^ *//g' filename
		sed 's/^[[:space:]]*//g' filename

2、行后和行前添加新内容

	行前:sed -i 's#^#HEAD&#g' filename
	行后:sed -i 's#$#&TAIL#g' filename
	&代表pattern

3、使用变量替换(使用双引号)

	 sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本

	 sed -i '1 i\插入字符串' filename

5、在最后一行插入

	sed -i '$ a\插入字符串' filename

6、在匹配行前插入

	sed -i '/pattern/ i "插入字符串"' filename

7、在匹配行后插入

	sed -i '/pattern/ a "插入字符串"' filename

8、删除文本中空行和空格组成的行以及#号注释的行

	grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d
  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值