支持输入流的命令
支持输入流的命令:能够读写文件内容的命令。
简单性质:能够读写文件内容的命令都支持管道(注意是对文件内容的操作,ls就不可以,因为它不能操作文件内容)。
more
从上往下浏览,按b向上翻,按空格往下翻,最后直接退出。
more a.txt
less
从上往下浏览,按b向上翻,按空格往下翻,按q退出,不会直接退出。
less a.txt
head
默认显示前10行
head a.txt
head -3 a.txt 或 head -n 3 a.txt
tail
默认显示最后10行
tail a.txt
tail -3 a.txt 或 tail -n 3 a.txt
管道 |
通过管道衔接这些命令,在管道之间穿梭的是文本信息
管道衔接的是前者的输出流和后者的输入流
基于文本流的加工方式
cat a.txt | more
cat a.txt | less
cat a.txt | head
cat a.txt | tail
head a.txt | tail -3
head a.txt | tail -3 | tail -1
ls /etc/ -l | more
错误示例
echo "/" | ls -l // 目的是 ls -l / ,但是失败了
因为 ls 不能打开文件,不能读取文件内容,也就是它对输入流无法处理,它只能接受参数。
那我就想让它成功怎么办?
echo "/" | xargs ls -l
但是,管道衔接的本质仍然没变,还是前者(echo)的输出和后者(xargs)的输入,只是在这里用了 xargs 的特性。
cut
cut a.txt -b 1-3 // 显示1-3列(按字符切分)
cut a.txt -d" " -f1-3 // 显示1-3列(按指定字符" "切分)
sort
sort a.txt
wc
wc -l a.txt
sed
sed -i "1a\hello" a.txt // 在第一行后插入一行 -i 表示修改后的内容写入文件
sed -i "2d" a.txt // 删除第二行
sed -i "s@hello@你好@" a.txt // 查找"hello"并替换成"你好"
sed -i "s/world/世界/" a.txt
awk
awk -F',' '{print $1}' a.txt //
不能
ls
pwd
cd
……