最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • Linux(七)管线指令

    管线是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管线。在命令之间使用 | 分隔各个管线命令。

    $ ls -al /etc | less
    

    提取指令

    cut 对数据进行切分,取出想要的部分。提取过程一行一行地进行。

    $ cut
    -d :分隔符
    -f :经过 -d 分隔后,使用 -f n 取出第 n 个区间
    -c :以字符为单位取出区间
    

    范例 1:last 将显示的登入者的信息,要求仅显示用户名。

    $ last
    root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
    root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
    root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
    
    $ last | cut -d ' ' -f 1
    

    范例 2:将 export 输出的讯息,取得第 12 字符以后的所有字符串。

    $ export
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/home/dmtsai"
    declare -x HOSTNAME="study.centos.vbird"
    .....(其他省略).....
    
    $ export | cut -c 12
    

    排序指令

    sort 进行排序。

    $ sort [-fbMnrtuk] [file or stdin]
    -f :忽略大小写
    -b :忽略最前面的空格
    -M :以月份的名字来排序,例如 JAN,DEC
    -n :使用数字
    -r :反向排序
    -u :相当于 unique,重复的内容只出现一次
    -t :分隔符,默认为 tab
    -k :指定排序的区间
    

    范例:/etc/passwd 内容是以 : 来分隔的,以第三栏来排序。

    $ cat /etc/passwd | sort -t ':' -k 3
    root:x:0:0:root:/root:/bin/bash
    dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
    alex:x:1001:1002::/home/alex:/bin/bash
    arod:x:1002:1003::/home/arod:/bin/bash
    

    **uniq** 可以将重复的数据只取一个。

    $ uniq [-ic]
    -i :忽略大小写
    -c :进行计数
    

    范例:取得每个人的登录总次数

    $ last | cut -d ' ' -f 1 | sort | uniq -c
    1
    6 (unknown
    47 dmtsai
    4 reboot
    7 root
    1 wtmp
    

    双向输出重定向

    输出重定向会将输出内容重定向到文件中,而 **tee** 不仅能够完成这个功能,还能保留屏幕上的输出。也就是说,使用 tee 指令,一个输出会同时传送到文件和屏幕上。

    $ tee [-a] file
    

    字符转换指令

    tr 用来删除一行中的字符,或者对字符进行替换。

    $ tr [-ds] SET1 ...
    -d : 删除行中 SET1 这个字符串
    

    范例,将 last 输出的信息所有小写转换为大写。

    $ last | tr '[a-z]' '[A-Z]'
    

    col 将 tab 字符转为空格字符。

    $ col [-xb]
    -x : 将 tab 键转换成对等的空格键
    

    expand 将 tab 转换一定数量的空格,默认是 8 个。

    $ expand [-t] file
    -t :tab 转为空格的数量
    

    join 将有相同数据的那一行合并在一起。

    $ join [-ti12] file1 file2
    -t :分隔符,默认为空格
    -i :忽略大小写的差异
    -1 :第一个文件所用的比较字段
    -2 :第二个文件所用的比较字段
    

    paste 直接将两行粘贴在一起。

    $ paste [-d] file1 file2
    -d :分隔符,默认为 tab
    

    分区指令

    split 将一个文件划分成多个文件。

    $ split [-bl] file PREFIX
    -b :以大小来进行分区,可加单位,例如 b, k, m 等
    -l :以行数来进行分区。
    - PREFIX :分区文件的前导名称
    
    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » Linux(七)管线指令

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 211会员总数(位)
    • 3737资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 869稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级