Linux入门基础(五):Linux管道,重定向,文本处理
多命令协作:管道及重定向
- 在Linux中,大多数命令都很简单,每个命令往往只实现一个或几个很简单功能.
- 我们可以通过将不同功能的命令组合起来一起使用,达到完成某个复杂功能的目的
- CLI下几乎所有的命令返回的都是纯文本,纯文本形式的数据又是绝大多数命令的输入格式
命令行shell的数据流有以下定义 :
| 名称 | 说明 | 编号 | 默认 |
|---|---|---|---|
| STDIN | 标准输入 | 0 | 键盘 |
| STDOUT | 标准输出 | 1 | 终端 |
| STDERR | 标准错误 | 2 | 终端 |
命令通过STDIN接收参数,通过STDOUT输出结果或STDERR输出错误
通过管道和重定向我们可以控制CLI的数据流
| 分类 | 关键字 | 定义 | 例子 |
|---|---|---|---|
| 重定向 | > | 将输出重定向到文件(覆盖) | echo 'aaa' > fileName |
| 重定向 | >> | 将输出重定向到文件(追加) | echo 'aaa' >> fileName |
| 重定向 | 2> | 将错误重定向到文件(覆盖) | ls nothere 2> fileName |
| 重定向 | 2>&1 | 将错误和输出结合重定向到文件 | ls nothere 2>&1 fileName |
| 重定向 | < | 重定向输入 | grep admin < /etc/passwd |
| 管道 | | | 将一个命令的输出作为另一个命令的输入 | ls -l | grep aaa |
文本处理
文件浏览
- cat 查看文件内容
- more 以翻页形式查看文件内容(只能向下翻页)
- less 以翻页形式查看文件内容(能上下翻页)
- head 查看文件的开始10行(或指定行数)
- tail 查看文件的结束10行(或指定行数)
基于关键字搜索
命令grep用以基于关键字搜索文本
例如
#在/etc/passwd 中搜索'aaaa'项
grep 'aaaa' /etc/passwd
#管道传值搜索
find / -user admin | grep Video 等于 grep Video (find的输出结果)
-i 在搜索时忽略大小写
-n 显示结果所在行数
-v 输出不带关键字的行,排除选项
-Ax 在输出的时候包含结果所在行之后的指定行数
-Bx 在输出的时候包含输出结果前几行
基于列处理文本
命令cut用以基于列处理文本内容
例如
#修剪指定列,显示passwd到位第1列,指定分隔符是‘:’
cut -d: -f1 /etc/passwd
#输出admin的信息,指定分隔符是:,并显示第3列
grep admin /etc/passwd | cut -d: -f3
#只显示第2到第6个字符
cut -c2-6 /etc/passwd
-d 指定分隔符
-f 指定输出列
-c 基于字符进行切割
文本统计
命令wc用以统计文本信息
-l 只统计行数
-w 只统计单词
-c 只统计字节数
-m 只统计字符数
文本排序
命令sort对文本内容进行排序
-r 进行倒序排序
-n 基于数字进行排序
-f 忽略大小写
-u 删除重复行
-t c 使用c作为分隔符分割为列进行排序
-k x 当进行基于指定字符分隔为列的排序时,指定基于那个列排序
删除重复行
命令sort -u 可以用来删除重复行
命令uniq用来删除重复的相邻行
文本比较
命令diff用以比较两个文件的区别
例如
#比较两个文件的区别
diff linux linux-new
#比较差异并生成文件
diff -u linux linux-new > final.patch
-i 忽略大小写
-b 忽略空格数量的改变
-u 统一显示比较信息[一般用以生成patch补丁文件]
拼写检查
命令aspell用以显示检查英文拼写
处理文本内容
命令tr用以处理文本内容
删除关键字
tr -d '敏感词' < linux
转换大小写
tr 'a-z' 'A-Z' < linux
搜索替换
命令sed用以搜索并替换文本
sed '正则表达式' 文件
例如
#将名为passwd文本里的cat替换成ac, g代表替换所有
sed 's/cat/ac/g' passwd
Linux入门基础(五):Linux管道,重定向,文本处理的更多相关文章
- Linux入门基础(一):Linux基本操作
命令行BASH基本操作 Shell 用户不能直接操作内核,所以用户操作通过shell传递给内核 shell分为两种 : GUI 图形界面 (linux一般是GNOME) CLI 命令行界面 (linu ...
- Linux入门基础 #9:管道及重定向
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- Linux入门基础(三):Linux用户及权限基础
用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...
- Linux入门基础(七):Linux软件管理基础
源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要编译成为二进制形式之后才能够运行 源代码基本编译流程 : ./configure 检 ...
- Linux入门基础(四):Linux网络基本配置
网络基础 ip编址 ip编址是一个双层编址方案(网络部分和主机部分),一个ip地址标识一个主机(或一个网卡接口) 现在应用最广泛的是IPv4编址,已经开始逐渐向IPv6编址切换 IPv4地址32位长, ...
- linux入门教程(五) Linux系统的远程登录
首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章. Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在ID ...
- Linux入门基础(六):Linux系统启动
系统启动流程 BIOS MBR : Boot Code 执行引导程序-GRUB 加载内核 执行init runlevel BIOS BIOS(basic input output system),我们 ...
- Linux入门基础(二):Linux磁盘及文件管理系统
磁盘管理 fdisk分区工具 只支持MBR分区 fdisk命令只有root用户能用 fdisk -l 列出所有安装磁盘及分区信息 fdisk /dev/sda (操作磁盘,按m可列出帮助界面,常用的操 ...
- Linux入门基础篇
Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...
随机推荐
- 工作中碰到的一个问题(cookie相关)
今天上线了一个API,6台机器做的集群.API的第一步是读取cookie,判断用户是否登录. 例如,线上服务器分别是 10.255.242.1 10.255.242.2 10.255.242.3 10 ...
- mvc, web mvc, spring web mvc 区别
1. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的 ...
- arcgis api for javascript本地部署加载地图
最近开始学习arcgis api for javascript,发现一头雾水,决定记录下自己的学习过程. 一.下载arcgis api for js 4.2的library和jdk,具体安装包可以去官 ...
- mongodb启动与运用
在操作前需要启动mongodb数据库服务 1.首先打开dos窗口,然后选择路径到你的安装路径下的bin目录(我的路径是的D:mongo\mongodb\bin) 2.然后输入启动命令(D:mongo\ ...
- 记录一个python公式罗列的方法 join()方法和map()方法的妙用
题干: 怎样将一个列表中的元素读出,并列出计算式子 比如:[,,,] 输出:+++ = 列表中的元素个数不定 小白和大神的方法: #小白的 numlist=[,,,] sum1='' cal='+' ...
- Kafka设计解析(八)Exactly Once语义与事务机制原理
转载自 技术世界,原文链接 Kafka设计解析(八)- Exactly Once语义与事务机制原理 本文介绍了Kafka实现事务性的几个阶段——正好一次语义与原子操作.之后详细分析了Kafka事务机制 ...
- 如何将freemarker文件转化为html文件
最近在做静态的页面报表服务,将前端生成的ftl文件转化为html格式的文件,供后面合成pdf使用. freemarker基础可以参见:freemarker官方文档 前期准备:需要一个基础的ftl格式的 ...
- Hadoop应用开发,常见错误
错误1:在windows执行mr Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.had ...
- 用javascript制作2048游戏的思路(原创若 转载请附上本链接)
一.项目已上传至github,地址:https://github.com/forjuan/2048game 二.学习了javascript基础后,想要捣鼓点东西做,做了一个自己以前很爱玩的2048游戏 ...
- Redis持久化存储详解(一)
> 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存.我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的 ...