2019-09-01-数据流
数据流
categories: Linux
数据流重定向
将命令的输出写入文件
# ls -al / > ./rootfiles # 写入到rootfiles # ls -al / >> ./rootfiles # 追加到rootfiles
将命令报错写入文件
# ls -al /notadir 2> ./rootfiles # 写入到rootfiles # ls -al /notadir 2>> ./rootfiles # 追加到rootfiles # ls -al /notadir 2> /dev/null # /dev/null是一个黑洞, 扔进去的东西就没了
将正确和报错都写入同一个文件
# ls -al / > ./rootfiles 2>&1 # 写入到rootfiles, &1指代rootfiles
从文件读取
# ls < listfile
一定条件下执行命令
;分隔符
:连续执行多个命令# ls;touch newfile
&&分隔符
: 在前一条命令不报错的时候执行下一条命令# ls /tmp && touch /tmp/newfile # /tmp目录存在时创建/tmp/newfile
||分隔符
: 在前一条命令报错的时候执行下一条命令# ls /tmp/newfile || touch /tmp/newfile # 如果/tmp/newfile不存在就创建它
提取信息
使用
grep
搜寻字符串# grep [expr] [targetfile(s)]
数据流重定向给grep
# ls | grep [expr]
grep
正则表达式的特殊规则{m, n}
:大括号需要转义, 亦即写成grep '...\{m, n\}' ...
[a-z]
: 中括号不需要转义
egrep
, 延申的正则表达式- 可以使用
+, ?, |, ()
等特殊符号
- 可以使用
使用
sed
替换删除# sed '[line range][actions]' [stdin]
[line range]
用n1,n2
的形式表示n1行到n2行所有行
.[actions]
包括:a
: 新增,c
: 取代,d
: 删除,i
:插入,p
: 打印,s
: 取待, 语法类似vim中ex编辑器.如果一个
sed
不够, 还可以再接sed
.单引号不要丢
列出
/etc/passwd
, 删除2到5行# cat /etc/passwd | sed '2,5d'
在2到5行后增加两行文字
111\n222
# cat /etc/passwd | sed '2,5a111\ >222' # 通过命令行的换行来增加多行文字
将2到5行的
:
更换为,
# cat /etc/passwd | sed '2,5s/:/,/g'
比较文件不同
diff
# diff [-bBi] from-file to-file 比较from-file和to-file的不同, 输出from-file和to-file的差异 -b: 多个连续空格视作一个 -B: 忽略空行差异 -i: 忽略大小写差异
cmp
# cmp [-s] from-file to-file 如果没有-s参数, 只会列出第一个不同处. 可以比较二进制文件.
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tianyilt@qq.com
文章标题:2019-09-01-数据流
本文作者:tianyilt
发布时间:2019-12-07, 23:40:55
最后更新:2019-12-10, 08:53:01
原始链接:http://yoursite.com/2019/12/07/Linux/2019-09-01-%E6%95%B0%E6%8D%AE%E6%B5%81/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。