现在的位置: 首页 > 操作系统 > 正文

linuxcast笔记:linux重定向、管道和文本处理工具

2018年09月30日 操作系统 ⁄ 共 1279字 ⁄ 字号 评论关闭

一、重定向和管道

重定向和管道linux中命令基本都实现简单功能,通过将不同命令组合在一起使用达到复杂功能。

linux中提供管道和重定向机制来实现多命令协作,管道及重定向就是Linux多命令协作的基础机制

Linux的Shell对数据流进行以下分类定义: 

名称
说明
编号
默认
stdin
标准输入
0
键盘
stdout
标准输出
1
终端
stderr
标准错误
2
终端

重定向用来控制终端数据流:

分类
关键字
作用
例子
重定向
>
将stdout以覆盖方式重定向到文件
ls>outfile
重定向
>>
将stdout以追加方式重定向到文件
date>>outfile
重定向
2>
将stderr重定向到文件(覆盖)
ls notexits 2>outfile  (2> /dev/null 不输出错误信息)
重定向
2>&1
将stdout和stderr结合到一起
ls notexits 2>&1 outfile
重定向
<
重定向stdin
grep linuxcast < /etc/passwd
管道 | 将一个命令的stdout作为另一个命令的stdin ls -l | grep linuxcast 
find / -user linuxcast | grep video

管道“|”用以将一个命令的标准输出作为另一个命令的标准输入

二、文本处理命令

文件浏览
cat      查看文件内容
more  翻页查看文件内容(只能向下翻)
less     翻页查看文件内容(上下翻页)
head  查看文件开头10行  
tail     查看文件结束10行

基于关键字搜索
grep 关键字    指定文件 ( 基于关键字搜索文本)
grep 'linuxcast'  /etc/passwd
find / -user linuxcast | grep video(查找所属用户为linuxcast文件中包含video的文件)
-i 搜索时忽略大小写    
-n 显示结果所在行
-v 显示不包含关键字的行(排除)
-Ax 在输出时候包含结果所在行之后指定行数
-Bx  在输出时候包含结果所在行之前几行

基于列处理文件
cut -d: -f1 /etc/passwd
-d  指定分割字符
-f  指定显示列
-c  基于字符顺序进行列分割 
cut -c2-6    /etc/passwd    (只显示第2到第6个字符)

文本统计(word count)
wc 文件
-l   只统计行数
-w  只统计单词数
-c   只统计字节数
-m  只统计字符数 

文本排序
sort 文件
-r   倒序排序
-n   基于数字进行排序
-f   忽略大小写
-u   删除重复行

删除重复行
sort -u linuxcast
uniq  删除重复行(只能删除相邻重复行) 
cat linuxcast | uniq

文本比较
diff linuxcast-1 linuxcast-2
-i  忽略大小写
-b  忽略空格数变化
-u  统一显示信息(一般用于生成patch文件)

检查拼写
aspell check linuxcast

处理文本内容
删除关键字 tr -d 'TMD' <linuxcast
转换大小写 tr 'a-z' 'A-Z' < linuxcast    转换大小写

搜索替换
sed  正则表达式 文件
sed 's/linux/unix/g' linuxcast   将所有linux关键字替换为unix

抱歉!评论已关闭.