Linux入门-7 Linux管道、重定向以及文本处理

本文介绍了Linux系统中如何利用管道和重定向机制实现多命令协作,并详细讲解了多种文本处理工具,如grep、cut、wc等命令的使用方法。

Linux管道、重定向以及文本处理

开源的一个重要理念:不要重复发明轮子
很多开源软件都是现有软件、代码、功能的重新组合。
《大教堂与集市》

1 Linux多命令协作:管道及重定向

管道和重定向

Linux中,大多数命令都很简单,往往只实现一个或几个简单的功能,我们可以将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。
Linux中,几乎所有命令的返回都是纯文本的,而纯文本形式的数据是绝大多数命令的输入格式,这就让协作成为可能。
Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。

  • 命令行shell数据流有以下定义:
名称说明编号默认
STDIN标准输入0键盘
STDOUT标准输出1终端
STDERR标准错误2终端

命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误。

  • 通过管道和重定向可以控制CLI的数据流
  • 管道通常用来组合不同的命令,以实现更复杂的功能
  • 重定向通常用来保存命令的输出或错误信息
分类关键字定义例子
重定向>将STDOUT重定向到文件(覆盖)echo "linuxcast.net" > outfile
重定向>>将STDOUT重定向到文件(追加)echo "linuxcast.net" >> outfile
重定向2>将STDERR重定向到文件(覆盖)echo "linuxcast.net" 2> outfile
重定向2>&1将STDERR与STDOUT结合echo "linuxcast.net" 2>&1 outfile
重定向<STDINgrep linuxcast < /etc/passwd
管道|将一个命令的STDOUT作为另一个命令的STDINls -l | grep linuxcast

一个更复杂的例子:查找用户linuxcast的Video文件,将查找错误重定向到null(丢弃)
find / -user linuxcast 2> /dev/null | grep Video

2 Linux命令行文本处理工具

文件浏览
  • cat/more/less/head/tail
基于关键字搜索-grep

该命令使用正则表达式搜索指定的纯文本文件或纯文本(管道)

  • -i 忽略大小写
  • -n 现实结果所在行数(文件)
  • -v 输出不带关键字的行(反选)
  • -Ax 输出的时候包含结果所在行之后的指定行数
  • -Bx 输出的时候包含结果所在行之前的指定行数
基于列处理文本-cut
  • -d 指定分割字符,默认为TAB
  • -f 指定输出的列号
  • -c 基于字符进行切割,固定长度

例:
cut -d: -f1 /etc/passwd:为分割符,显示第一列
grep linuxcast /etc/passwd | cut -d: -f3输出用户linuxcast的uid(第三列)
cut -c2-6 /etc/passwd第2-6个字符

文本统计-wc
  • -l 只统计行数line
  • -w 只统计单词word
  • -c 只统计字节数
  • -m 只统计字符数
文本排序-sort
  • -r 进行倒叙排序
  • -n 基于数字进行排序
  • -f 忽略大小写
  • -u 删除重复行
  • -tc 使用c作为分隔符分割为列进行排序
  • -kx 当进行基于指定字符分割为列的排序时,指定基于哪个列排序
删除重复行
  • sort -u 排序时删除重复行
  • uniq 删除重复的相邻行
文本比较-diff
  • -i 忽略大小写
  • -b 忽略空格数量的改变
  • -u 统一显示比较信息(一般用以生成patch文件)
    diff -u linuxcast linuxcast-new > final.patch
检查拼写-aspell
  • aspell check linuxcast
  • aspell list < linuxcast
处理文本内容-tr

translate

  • tr -d 'TMD' < linuxcast 删除关键字
  • tr 'a-z' 'A-Z' < linuxcast 转换大小写
搜索替换-sed

使用正则表达式处理文本文件

  • sed 's/linux/unix/g' linuxcast 替换linux为unix,/g全部替换
  • sed '1,50s/linux/unix/g' linuxcast 替换1-50行
  • sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast 多个正则表达式
  • sed -f sededit linuxcast 将匹配表达式保存在sededit文件中

转载于:https://www.cnblogs.com/whenyd/p/8440862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值