美文网首页
Mac grep sed awk 三剑客命令

Mac grep sed awk 三剑客命令

作者: GalaxyJM | 来源:发表于2020-07-20 11:49 被阅读0次

    一、grep

    二、sed

    sed不会对源文件进行操作,会生成一个模式空间(类似于缓存)修改里面的内容
    如果需要修改源文件,需要加上-i,mac 下的sed命令和linux下的参数略有不同,mac加上 -i ‘’ 。

    可参考:https://www.cnblogs.com/ginvip/p/6376049.html

    1.a:添加

    例:在test.sh文件第二行下面添加“newline”
    Linux语句:

    sed  '2 a newline' test.sh
    

    mac下的Linux语句:

    sed '2a\'$'\nnewline\n' test.sh
    

    注意:

    1.这个$符表示匹配最后一行。
    2.插入字段两头都要加上换行 \n

    2.i:插入

    和上面用法一样,但是插入在某行的上面

    3.s:替换

    用一个字符串替换另一个
    例:把test.sh文件的“ hello”替换成“123”

    sed -e 's/hello/123/g' test.sh
    
    注意:-e可加可不加,不加g的话只替换每行的第一个出现的hello,加g会全局替换

    4.c:替换

    用新文本修改(替换)当前行中的文本
    例:把第二行的内容修改为num

    -e '2c\'$'\nnum\n' test.sh
    

    5.d:删除

    例:删除test.sh文件中第2-5行的内容

    sed -e '2,5d' test.sh
    

    6.p:打印

    打印包含root的行

    -n '/root/p' test.sh
    
    注意:

    -n :使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行

    三、awk

    awk:把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分在做后续处理

    awk命令形式
    awk ‘正则+动作’ 文件名

    1.查看含有root的行

    awk -F : '/root/{print $0}' /etc/passwd
    

    2.查看第2行内容并打印

    awk -F : 'NR==2{print $0}' /etc/passwd
    

    3.使用BEGIN加入标题

    awk -F : 'BEGIN{print "begin"}{print $1,$2}' /etc/passwd
    

    4.自定义分隔符

    echo '123|222|12333' | awk 'BEGIN{RS="|"}{print $0}'
    
    注意:echo:用于字符串的输出

    相关文章

      网友评论

          本文标题:Mac grep sed awk 三剑客命令

          本文链接:https://www.haomeiwen.com/subject/jgdekktx.html