精华内容
下载资源
问答
  • Linux三剑客

    2019-10-19 17:08:31
    Linux三剑客 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、示例

    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
    
    展开全文
  • linux三剑客

    2019-11-06 23:17:17
    grep活泼可爱,善于检索文本内容,可根据双引号(一般都用双引号)内的内容检索到内容所在行并输出行信息,并且在指定内容加颜色,是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

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,265
精华内容 1,306
关键字:

linux三剑客

linux 订阅