Linux管道、重定向及多命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
管道和重定向
多命令协作就是通过管道和重定向机制完成的
1.命令行shell的数据流定义
2.重定向
>将STDOUT重定向到文件(覆盖)
andy@Fred:~/fred$ echo "abcd" > dddd
andy@Fred:~/fred$ ls
a abc b
b cc
c dddd
andy@Fred:~/fred$ cat dddd
abcd
andy@Fred:~/fred$ ls -l
总用量12
-rw-r--r-- 1 andy andy 0 1月 3 21:43 a
drwxr-xr-x 2 andy andy 4096 1月 5 10:47 abc
-rw-r--r-- 1 andy andy 0 1月 3 21:43 bb
-rw-r--r-- 1 andy andy 24 1月 3 21:43 ccc
-rw-r--r-- 1 andy andy 5 1月7 21:33 dddd
andy@Fred:~/fred$ ls -l > ddd
andy@Fred:~/fred$ cat ddd
总用量12
-rw-r--r-- 1 andy andy 0 1月 3 21:43 a
drwxr-xr-x 2 andy andy 4096 1月 5 10:47 abc
-rw-r--r-- 1 andy andy 0 1月 3 21:43 bb
-rw-r--r-- 1 andy andy 24 1月 3 21:43 ccc
-rw-r--r-- 1 andy andy 0 1月7 21:35 ddd
-rw-r--r-- 1 andy andy 5 1月7 21:33 dddd
>>将STDOUT重定向到文件(追加到最后,另起一行)
错误信息是不能添加进入的
2>是将错误信息进行添加,但是正确是信息是不会写入。
STDOUT即为不含错误信息。
2>&1将STDOUT和STDERR结合,全部返回
< 重新定向标准输入STDIN
如:grep(查找关键字)linuxcast < /etc/passwd
将passwd这个文件的内容作为标准输入输入给命令
管道:|
将一个命令的STDOUT作为另一个命令的STDIN
root@Fred:/# find / -user andy 2> /aaaa/null | grep andy #从更目录查找,用户名是
/tmp/vmware-andy #andy的文件及目录,然后
/tmp/vmware-andy/vmware-apploader-3597.log #将错误信息写入null文件
/tmp/vmware-andy/vmware-apploader-4284.log #在输出的信息中查找关键
/tmp/orbit-andy #字andy,并输出
/tmp/tracker-andy
管道:通常用来组合不同的命令,实现复杂的功能
重定向:用来保存命令的输出信息或错误信息,可以用来记录执行结果或保存错误信息到指定文件。也可作为筛选输出的方法
LINUX系统基础---文本处理
1.基于关键字搜索文本grep
grep aaa /etc/passwd 从passwd这个纯文本文件中搜关键字aaa 搜索的关键字是一个单词的话不需加“”。
-i 搜索时忽略大小写
-n 现实结果所在行数
-v 输出不带关键字的行
-Ax输出关键字所在行的之后几行
-Bx 输出关键字所在行的之前几行
基于列处理文本
andy@fred:~$ grep -B3 andy /etc/passwd
rtkit:x:109:116:RealtimeKit,,,:/proc:/bin/false
saned:x:110:117::/home/saned:/bin/false
Debian-gdm:x:111:118:Gnome Display Manager:/var/lib/gdm3:/bin/false
andy:x:1000:1000:andy,,,:/home/andy:/bin/bash
列之间用“:”进行分隔,表示不同信息
如何做到只显示某一列的信息:
cut命令
cut -d: f1 /etc/passwd
-d 指定分隔符(默认TAB)上面是指定“:”为分隔符
-f 指定输出列号
-c 基于字符进行分隔cut -c2-6 /etc/passwd #显示第2-6个字符处理输出信息
grep andy /etc/passwd | cut -d: -f3
wc文本统计
-l 只统计行数-w 只统计单词
-c 只统计自己数-m 只统计字符数
sort对文本内容进行排序
-r倒序-n基于数字排序-f忽略大小写
-u 删除重复行-tc 使用c作为分隔符分割为列进行排序
-kx 基于指定字符分隔位列的排序时,指定基于哪个列排序uniq 删除重复的相邻行
diff文本比较
-i忽略大小写-b忽略空格数量的改变
-u 统一显示比较信息(一般用来生成patch补丁文件)
diff -u aaaa1 aaaa2 > final.patch
处理文本内容
删除关键字
tr -d ‘TMD’ < aaa 一个单词可以不用’’
转换大小写
tr ‘a-z’‘A-Z’ < aaa 尽量更换字母的个数相等可以不加’’搜索替换
sed
sed ‘s/linux/unix/g’ aaa 把aaa文件中所有unix换为linux s搜索
g如果一行中出现多个关键字,则都进行替换