shell脚本编程学习笔记6(xdl)——字符串截取命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SiuKong_Ngau/article/details/79947561

shell脚本编程学习笔记6——字符串截取命令

1,cut命令

[root@localhost ~]# cut [选项] 文件名
    -f 列号,表示提取第几列
    -d 分隔符,按照指定的分隔符分割列
    注意:默认分隔符是制表符

    实例:
        cut -f 2 filename   按照制表符分隔的,提取第二列
        cut -f 2,3 filename 提取第二列和第三列
        cut -d ":" -f 1,3   按照:为分隔符提取1和3列

cut局限性:
    不能提取分隔不是很明确的列,所以需要awk来提取。cut比较简单

2,printf命令

[root@li1079-128 ~]# printf '输出类型输出格式' 输出内容
输出类型:
    %ns     输出字符串,n是数字指代输出几个字符
    %ni     输出整数,n是数字指代输出几个数字
    %m.nf   输出浮点数,m和n代表整数位书和小数位数,%8.2f 总共8位,小数点后两位

输出格式:
    \a  输出警告音
    \b  输出退格键,backspace
    \f  清除屏幕
    \n  换行
    \t  水平输出退格 tab
    \r  回车
    \v  垂直输出退格 tab

注意:awk命令的输出中,支持print和printf,print会在每个输出之后自动加入换行符
     printf标准格式的输出命令,不带换行符。

3,awk

[root@li1079-128 ~]# awk 'case1{action1}case2{action2}...'
    case:
        关系表达式作为判断条件
    action
        格式化输出,流程控制等
实例:
    [root@li1079-128 ~]# df -h | awk '{printf $1"\t"$3"\n"}'


BEGIN{执行之前定义}
END{执行之后定义}

实例:# cat /etc/passwd | grep "/bin/bash" | \ 
     awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}' 
     以上例子用了BEGIN定义了分隔符

     关系运算
实例:# cat student.txt | grep -v Name |  \ 
     awk '$6 >= 87 {printf $2 "\n" }'

4,sed

简介:sed 是一种几乎包括在所有 UNIX 平台( 包括 Linux)的轻量级流编辑器。
     sed主要 是用来将数据进行选取、替换、删除、新 增的命令



[root@localhost ~]# sed [选项] ‘[动作]’ 文件名 
    选项:  -n:  一般sed命令会把所有数据都输出到屏幕 ,  
                 如果加入此选择,则只会把经过sed命令处  
                 理的行输出到屏幕。  
            -e:  允许对输入数据应用多条sed命令编辑  
            -i:  用sed的修改结果直接修改读取数据的文件,  而不是由屏幕输出 



    动作:
    a \:  追加,在当前行后添加一行或多行。添加多行时,除最后一行外,
           每行末尾需要用“\”代表数据未完结。  
    c \:  行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,
           每行末尾需用“\”代表数据未完结。    
    i \:  插入,在当期行前插入一行或多行。插入多行时,除最后一行外,
           每行末尾需要用“\”代表数据未完结。  
    d:    删除,删除指定的行。  
    p:    打印,输出指定的行。  
    s:    字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字     串/g”(和vim中的替换格式类似)。


    实例:
        [root@localhost ~]# sed '2p' student.txt  
        [root@localhost ~]# sed -n '2p' student.txt
        [root@localhost ~]# sed '2,4d' student.txt  # 删除第二行到第四行的数据 ,但不修改文 件本身
        [root@localhost ~]# sed '2a hello' student.txt   # 在第二行后 追 加 hello 
        [root@localhost ~]# sed '2i hello 
        \ world' student.txt # 在第二行前插入两行数据
        # sed '2c No such person‘ student.txt # 数据替换
        # sed ‘s/旧字串/新字串/g’ 文件名 
        # sed '3s/74/99/g' student.txt  # 在第三行中,把 74 换成 99 
        #sed -i '3s/74/99/g' student.txt  #sed操作的数据直接写入文件 
        # sed -e 's/Liming//g ; s/Gao//g' student.txt  
        # 同时把“ Liming ”和“ Gao ”替换为空
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页