微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux中重定向输出的学习

系统大全为您提供

 在这里重定向可以做如下理解:

原来的输出方式好比是向一个水池(屏幕)中放水的水龙头,水就是要输出内容

当把水龙头转接到不是水池的桶(文件)中时,就是重定向输出了。

linux中的输出方式主要有:

标准输出的两种方式:

STDOUT 标准输出

STDERR 标准错误

屏幕的输出可以被重定向,使得原来应该输出到屏幕上的内容重定向到其他的地方,

比如说是文件

格式:命令 操作 文件

e.g.ls /etc -l 1> ls.txt 2>err.txt

其中:

命令还是原来操作的命令,所有的已知有输出命令都是可以的。

操作是输出的类型,有

1> 一类,STDOUT

2> 二类,STDERR

&> 所有(包括1类和2类消息)注意此时输出中如果有错误信息,会首先输出,无论先执行的是1类还是2类输出

> 如果不加数字(类型)认的是标准输出,即1

它所执行的操作是首先将重定向到的文件进行删除

注意这一点,是附加append还是要通过临时文件来写入

文件名就是要被重定向到的地方,当原路径中已有此文件就会被覆盖,没有则生成

如果想原文件中的内容不被覆盖而是在后面进行追加(写在后面)那么就可以使用如下的操作

1>> 同 >>

2>>

&>>

追加模式时如果被重定向输出有标准输出和标准错误输出,那么

e.g. ls /etc /wrongdir 1>>ls.txt 2>>err.txt

ls /etc /wrongdor 1>>ls.txt 2>>ls.txt

不过我在ubuntu12.04中试过后看到使用&>>也是可以的。

当某类输出重定向后,该类输出便不会在屏幕上显示

当标准输出和标准错误输出同时存在的时候,根据操作的种类决定重定向内容重定向文件

head 命令:从头看

tail 命令:从尾看

后面可以加上参数进行处理:

e.g. cat 5.txt | head -n5 察看前5行的内容

cat 5.txt | head -n 10 |tail -n 7 察看4,5,6,7,8,9,10共7行内容用这种方法可以快速截取某大文件中的某一段

cat 5.txt | head -n 10 |tail -n 7 >result.txt

-------------------------------------

grep 利用正则表达式 达到字符匹配的效果

-i (case-insensitive) 中的关键开关 表示忽略大小写的差异

-n 打印出搜到的内容所在的行号 配合vim使用的话,可用vim +行号数字 路径

-v 排除掉给定的东西,给出剩下的东西verse

cat filename |grep ^# -v |grep -v ^$

cat filename |gerp -Ev '^(#|$)'--------------注意正则表达式的写法

以上的两种写法是一致的

-A数字 after 在A之后的数字行的内容

-B数字 before 在B之前的数字行的内容

---------------------------------------

cut命令 按照制定的内容内容进行切割,相当于split()函数

-d (delimiter) 制定分割的分隔符 认的是Tab e.g. cut -d: #以:进行切割

-f 制定要打印的列 cut -d: -f 1

-c 按照字符进行切割 echo "weuhi-qiege-sdfijo"|cut -c 7-11 #切割qiege

----------------------------------------

sort命令 对内容进行排序

如果直接用sort命令而不制定按照的内容的格式进行排序,那么认按照的方式是字符的字典顺序

-n 开关,对内容进行排序,排序格式按照的内容是数字 认是升序

-r (reverse)降顺

-t c使用c作为字段分隔符

-k x对字段x排序 sort -t: -k 3 按照:进行分割后按照第三列进行分割

-----------------------------------------

uniq命令

将相邻的两行相同的内容进行移除

-c 用来统计重复的个数

cat num.txt | sort |uniq -c 用于统计文本中出现的内容

-----------------------------------------

文本分析工具

wc 对文本进行计数

-l 行数统计

-w 单词数统计

-c 字节统计

-m 字符统计(不显示)

-----------------------------------------

文本分析 对比文件

diff 对文本进行对比分析 输出保存到一个文件中,称呼其为“补丁文件

使用时使用 -u作为“统一”格式的diff 适用于补丁文件,便于以后用patch命令进行打补丁

diff filename1 filename2

出现结果就是两者文件的不同 显示的是两个文件中的不同

filename1为左文件 < 原文件

filename2为右文件 > 新文件

-----------------------------------------

patch 对文件进行大补丁

复制所作的改变到其他文件中,使用-b自动备份要改变的文件

diff -u foo.conf-broken foo.conf-works >foo.patch

patch -b foo.conf-broken

----------------------------------------

tr traslate 翻译转换

----------------------------------------

命令sed(stream editor)全文替换

但是其编辑的内容只是流的编辑,当然可以替换的内容重定向文件

sed ‘s

arch/replace/’将要找的内容(search)换成要替换成的内容(replace)

其中/是定界符 还可以是@ #等

g 全局开关,使得如果一行中出现多个要被替换的内容时可以全部被替换

i 忽略大小写

删除

命令前添加 m,n表示对[m,n]行区间的内容执行sed '87,93s

arch/replace/'命令

m=87 n=93

sed '/cat/,/dog/s

arch/replace'

遇到cat直到dog的内容被替换掉 [cat,dog]

-----------------------------------------

sed -e '表达式1' -e '表达式2' -e '表达式3'

-e开关用法 用一次sed可以执行多个表达式

-f开关用法 将命令的表达式写到文件中,然后用sed -f myrule.txt来执行

 

  以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。 

 

本文来自系统大全http://www.win7cn.com/如需转载请注明!推荐:win7纯净版

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐