码迷,mamicode.com
首页 > 其他好文 > 详细

IO和管道

时间:2019-04-25 20:07:53      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:c中   缩进   stdout   字段   server1   may   表示   第一个   需要   

读入数据:input
输出数据:output

三种IO设备:
标准输入 标准输出 标准错误
0 ? ? ? 1 ? ? ? 2
STDIN STDOUT STDERR
?
——————————————————————————
< ?标准输入
输出和错误可以被重定向到文件
命令 操作符号 文件名
?
支持的操作符号包括:
\> 把输出重定向到文件,文件内容会被覆盖
2> 把错误重定向到文件
&> 把所有输出重定向到文件
?
set –C 禁止将内容覆盖已有文件,但可追加
\>| file 强制覆盖
set +C 允许覆盖
\>> 原有内容基础上,追加内容

?
——————————————————————————
多行重定向
使用“<<终止词”命令从键盘把多行重导向给STDIN
直到 终止词 位置的所有文本都发送给STDIN
有时被称为就地文本(heretext)
例:mail -s "Please Call" admin@test.com <<END

?> Hi Wang
\> Please give me a call when you get in. We may need
\> to do some maintenance on server1.
\> Details when you‘re on-site
\> END
?
当在脚本中需要多行重定向缩进时,可在终止词前添加-
例: if xxx
cat <<-end
xxx
aaa
end 只要是单独一行的终止词就会结束
?
————————————————————————————
转换和删除字符tr
语法:tr [选项][源字符][替换字符]
选项:-t 将第一个字符集对应字符转化为第二字符集对应的字符
?? -c –C --complement:取字符集的补集
?? -d 删除所有属于第一字符集的字符
?? -s 把连续重复的字符以单独一个字符表示
?? -d ‘\r 可以把windos文本换行删掉成linux格式
支持:
[:alnum:]字母和数字 [:alpha:]字母[:digit:]数字
[:lower:]小写字母[:space:]空白字符 [:upper:]大写字母
?
例:[root@muniao ~]#tr -t ‘abc‘ ‘AB‘
??abc ??? 只将ab对应的字符转换,c不做转换
??ABc
?
例:[root@muniao ~]#tr -d ‘abc‘ ?? 删除字段中的abc字符
??a1b2c3
??123
??
例:[root@muniao ~]#tr -s ‘abc‘ ??压缩连续重复字符
??aaaabbbbcccc
??abc
?
例:[root@muniao ~]#tr ‘[:lower:]‘ ‘[:upper:]‘
??aaaa ?? 大写替换小写
??AAAA

?
使用<来重定向标准输入
tr ‘a-z’ ‘A-Z’< /etc/issue
该命令会把/etc/issue中的小写字符都转换成大写字符
?
tr –d abc < /etc/fstab
删除fstab文件中的所有abc中任意字符

——————————————————————————————
管道命令 【 | 】
语法:命令1 | 命令2 | ....
命令1为标准输出,命令2为标准输入,命令2引用命令1为标准输入
?
标准错误默认不能通过管道转发,可利用2>&1 或 |& 实现
?

例:计算1+2+3+..+99+100的总和
[root@centos7 ~]#seq -s + 100 |bc
5050
?
[root@centos7 ~]#echo {1..100} |tr ‘ ‘ ‘+‘|bc
5050

IO和管道

标签:c中   缩进   stdout   字段   server1   may   表示   第一个   需要   

原文地址:https://blog.51cto.com/14127426/2384771

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!