-
Linux三剑客
2019-10-19 17:08:31Linux三剑客 Linux三剑客即是:grep查找、awk切片、sed修改 一、grep grep用于查看文件中符合条件的字符串 1、常用参数: -c 或 --count : 计算符合样式的行数。 -d <动作> 或 --directories=<动作> :...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、示例
- 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
-
linux三剑客
2019-11-06 23:17:17grep活泼可爱,善于检索文本内容,可根据双引号(一般都用双引号)内的内容检索到内容所在行并输出行信息,并且在指定内容加颜色,是linux主人不可或缺的工具之一,深受大家青睐。他有很多结拜兄弟一起干事,...三师兄grep
grep活泼可爱,善于检索文本内容,可根据双引号(一般都用双引号)内的内容检索到内容所在行并输出行信息,并且在指定内容加颜色,是linux主人不可或缺的工具之一,深受大家青睐。他有很多结拜兄弟一起干事,各司其职。下面有请他和他的搭档闪亮入场并做自我介绍:
hello everyone!my name is grep,I am good at print lines matching a pattern, pleased to meet you!下面有请我介绍一下我的小兄弟:
grep “文本内容” filename 我自己可以独当一面找东西
-i 这位可以帮我忽略掉文本大小写字母,有时候我眼神不太好
-v 这位兄台比较有腔调,喜欢和我反着干,擅长取反,偶尔还是需要他的
-c 小财务,干完事能帮我计算出满足条件的行数
-n 勤快的小秘书,把检索出来的行标上行号,供我识别
-w 他喜欢端小组的窝,后面一搬跟的是一串,隔开的装作不认识
-E 这个本来是大哥的事,不方便的时候我也可以尽本能
-o 只显示标红的(想要的)过滤信息演练一下绝活,检索ip,装作不知道其他命令
ip a s eth0|grep "inet "|grep -E “([0-9]{1,3}.?){4}” -o |head -1
好的qqq!下面有请二师兄亮相zhangsheng.avi二师兄sed
增删改查我样样精通,有人说我是流编辑器,但我自己觉得我是一个黄牛,给我一套工具,我能干掉半个市场,忘了用english介绍了,I like stream editor for filtering and transforming text,qqq!
使用说明 sed [选项] [sed内置命令字符] filename选项有俩-n和-i
-n是取消默认打印,不加他查内容是原文本找不出具体要的内容,一般都带上,防止偷懒 -i喜欢整点干货,直接修改文件内容。 -e还有我,操作多个命令记得每个命令前带上我 -r 还有我,给老大干事不报我名门都进不了
内置命令有6
01 p 打印显示
02 d 删除
03 a 在行的下面增加一行
04 i在行的上面增加一行
05 s替换,有明确的目标,用分隔符分开谁换成谁s###
06 g喜欢和s###一起工作,可以帮他干一行多列
07 c 将一行信息进行替换修改For example,我也智取ip
ip a s eth0|sed -nr '3s#^.et (.)/24.*$#\1#gp’大师兄awk
其实我是三兄弟的集合,业内大佬都知道,大文件中的内容只要你想要哪列我基本都能给你看过来,看你怎么操作了,拿你的钱办你的事jianxiao.jpg。请我下山前做好准备工作不要直接问我能干吗,毕竟自己介绍自己能干吗挺没面子的。
上山请阅读葵花宝典:awk 参数 ‘条件{动作}’ filename
执行原理: 按行处理文件信息, 根据匹配条件信息, 完成相应操作动作,干其他事别找我,别到时候我说不会就尴尬了。
我的参数不多先给你们介绍下-F" x",引号中间跟分隔符,多个用[]括起来,用来指定分隔符
我的条件必须逻辑清晰,比如NR是几,几和几,几到几,哪些几或哪些几等等;
有指定列得用$n~表示
再比如内容//里面要写好,反正搞清楚才能干后面的事一般检索行号和内容不需要加动作,输出的是行,如果要取列信息,全场动作必须跟我整齐画一,{print $n}
我也取个ip骚一波
ifconfig |awk 'NR==2{print $2}'
没办法,功能强大干的活少,没这点能耐真做不了大哥
有很多表达式和奇怪的符号看不懂没关系,这是我们的看家本领,只怪我人x话不多,以后有机会一定慢慢聊!一个篱笆三个字,一个好汉三个帮,更多好文分享下期再见掌声.avi
-
激光对魔芋葡甘聚糖降解的初步探究
-
基于石墨烯的高效复合波导调制器研究
-
408 Computer Network 二层 数据链路层 - 3.4 流量控制与可靠传输机制
-
文本与文本域对齐
-
250B石英晶体测试参数详解.doc
-
2021.1.25-date5列表
-
Scratch编程等级考试二级真题讲解(电子学会图形化编程)
-
电动汽车无线充电松耦合变压器仿真研究
-
Selenium3分布式与虚拟化
-
附件2-电子健康卡加解、密签名辅助接口说明文档V1.0.docx
-
基于三维点云的机器人加工轨迹规划
-
gbkeegbaiigmenfmjfclcdgdpimamgkj-135.360.369-Crx4Chrome.com.crx
-
运动原子和场相互作用模型中的量子关联
-
Vue状态管理
-
一种提高空间遥感相机宽温度场测温精度方法
-
可调谐多倍布里渊频移间隔多波长光纤激光器
-
数据类型转换、运算符、方法入门
-
【2021】UI自动化测试框架(Selenium3)
-
Surface enhanced Raman scattering of gold nanoparticles aggregated by a gold-nanofilm-coated nanofiber
-
2.5D插件.rar