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

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

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

    • 管道和重定向
  • 2 Linux命令行文本处理工具
    • 文件浏览
    • 基于关键字搜索-grep
    • 基于列处理文本-cut
    • 文本统计-wc
    • 文本排序-sort
    • 删除重复行
    • 文本比较-diff
    • 检查拼写-aspell
    • 处理文本内容-tr
    • 搜索替换-sed

开源的一个重要理念:不要重复发明轮子

很多开源软件都是现有软件、代码、功能的重新组合。

《大教堂与集市》

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
重定向 < STDIN grep linuxcast < /etc/passwd
管道 | 将一个命令的STDOUT作为另一个命令的STDIN ls -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

时间: 2024-08-24 21:14:41

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

linux(5)--补充(管道| / 重定向&gt; / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html以此为例: cat test.sh test1.sh 2>/dev/null | grep -n 'echo' 此时若test.sh 不存在,报错信息不会输出到屏幕中,而是转入 /dev/null中,如

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

linux入门基础——linux扩展权限

linux扩展权限 linux的默认权限和特殊权限 创建一个文件:touch filename1 查看新文件的默认权限:ls -l filename1 -rw-rw-r-- 1 liu liu 0  6月  7 09:33 file1 创建一个文件夹:mkdir filename2 查看新文件夹的默认权限L:ls -ld filename2 drwxrwxr-x 2 liu liu 4096  6月  7 09:34 file2 发现默认情况下文件夹比文件多了一个执行x权限,否则无法查看文件夹,

linux入门基础——linux多命令协作:管道及重定向

linux多命令协作:管道及重定向 不要重复发明轮子 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件.代码.功能的重新组合,就好像通过零件装配机器一样,源代码的开发和共享让这成为了可能,同时也大大的提供了效率和生产力. 管道和重定向 在linux系统中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或者多个很简单的功能,可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的.组合命令的技术是管道和重定向. linux中,几乎所有命令的返回

Linux 入门学习-LINUX基本认识及常用命令

Linux基础入门之(终端说明) 用户的说明 用户的分类: 系统用户 有特殊权限的系统管理者用户,超级系统用户 root用户 :权限最大,类似于windows系统中的administrator 用户 登录用户 权限有所限制的用户,无法执行一些特殊操作 用户编号:每个用户都会被分配一个用户编号(uid)来表示该用户的唯一性 管理员root 系统用户 普通用户 CentOS6用户编号uid       0     1~499     500+ CentOS7用户编号ui       0     1~

Linux 入门学习-LINUX命令行描述及常用命令

Linux基础入门之(常用命令) 1.命令行构成 命令提示符一般有GUI.GLI两种接口 1.1命令行组成:命令提示符.prompt.bash(使用的shell) 1.1.1  提示符格式默认为系统变量设置 使用echo命令输出PS1系统本地变量 [[email protected] testdir]# echo $PS1 [\[email protected]\h \W]\$ 1.1.2  用户登录提示符: $:表示普通用户 #:表示系统用户 pwd 显示当前用户所在目录 [[email pr

Linux入门之linux简介及Vmware Workstation

说起linux,不得不提芬兰青年Linus,正是他那10000行代码的核心,开创了一个开源软件.系统的新纪元.严格上将linux,仅仅是指其内核,无法直接使用,必须将人机交互程序及各种应用程序组合在一起才能使用,这就叫做Linux发行版.主流的linux发行版有Debian的ubuntu,Slackware的SUSE和Redhat的RHEL.Fedora以及CentOS. 图.主流linux发行版 对于新手而言,学习linux不必非要将自己的机器装一个linux系统(我想没人愿意这样做),我们大

Linux入门之Linux环境下如何让进程在后台运行

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统. 一. nohup / setsid / & 使用场景:如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢? 我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让

linux入门基础——linux命令行文本处理工具

linux命令行文本处理工具 文件浏览 cat        查看文件内容 more    以翻页形式查看文件内容(只能向下翻页) less    以翻页形式查看文件内容(可上下翻页) head    查看文件的开始10行(或指定行数) tail    查看文件的结束10行(或指定行数) 基于关键字搜索 命令grep用以基于关键字搜索文本 -i        在搜索的时忽略大小写 -n        显示结果所在行数 -v        输出不带关键字的行 -Ax        在输出的时候包含