注意:管道命令“|”仅能处理通过前面一个命令传来的正确信息,也就是标准输出(STDOUT)的信息,对于标准错误,并没有直接处理能力。
一些基本的管道命令:
1. cut
这个命令可以将一段消息的某段“切”出来。处理的消息是以“行”为单位。
# cut -d '分隔符' -f fields
# cut -c 字符范围
参数:
-d : 后面接分隔符。与 -f 一起使用。
-f : 根据 -d 的分隔符将一段消息分为数段,用 -f 取出第几段的意思。
-c : 以字符为单位取出固定的字符范围。
2.grep
cut 是将一行消息中取出我们想要的部分, grep 则是分析一行消息,若其中有所需要的信息,就将该行取出。
# grep [-acinv] '搜索字符串' filename
参数:
-a : 将二进制文件以文本文件的方式搜索数据
-c:计算找到‘搜索字符串’的次数
-i:忽略大小写的不同
-n: 顺便输出行号
-v:反向选择,即显示出没有‘搜索字符串’内容的那一行。
3. sort
用于排序,而且可以根据不同的数据类型来排序。如数字与文字的排序就不一样。
# sort [-fbMnrtuk] [file or stdin]
参数:
-f : 忽略大小写的差异
-b : 忽略前面的空格符部分
-M :以月份的名字来排序,例如 JAN、DEC 等的排序方法。
-n :使用“纯数字”进行排序(默认是以文字类型来排序的)。
-r : 反向排序。
-u:uniq,相同的数据中,仅出现一行表示。
-t:分隔符,默认是 tab 键。
-k:按那个字段(field)来进行排序。
4. uniq:
如果排序完,想要将重复的数据仅显示一次,可以这样做。
# uniq [-ic]
参数:
-i : 忽略大小写
-c: 进行计数
5. wc
# wc [-lwm]
参数:
-l: 仅显示多少行。
-w: 仅显示多少字(英文单词)
-m:多少字符。
6. tee:
tee 命令可以同时将数据流分送到文件和屏幕;而输出到屏幕的,可以让下个命令继续处理。
# tee [-a] file
参数:
-a :以累加(append)的方式,将数据加入file中。
例如:# ls -l / | tee -a ~/homefile | more
ls -l / 的输出被分流到 ~/homefile 和屏幕上。
7. tr:
tr 可以用来删除一段消息中的文字,或者是进行文字消息的替换。
# tr [-ds] SET1 ...
参数:
-d : 删除消息中的 SET1 字符串。
-s:替换重复的字符。
例如:
# last | tr '[a-z]' '[A-Z]' #将 last 输出的消息中,所有小写变成大写字母。
# cat /etc/passwd | tr -d ':' #将 /etc/passwd 输出消息中的冒号(:)删除。
8. xargs:
功能:xargs 可以读入 stdin 的数据,并且以空格符或换行符作为标识,将 stdin 的数据分隔成为参数。(因为是以空格符作为分隔,所以,如果有一些文件名或其他意义的名词内含有空格符的时候,xargs 可能就会误判了。)
用法:
# xargs [-0epn] command
参数:
-0: 如果输入的 stdin 含有特殊字符,例如‘,\,空格等字符,这个 -0 参数可以还原成一般字符,这个参数可以用于特殊状态。
-e:这是 EOF (end of file)的意思。后面可以接一个字符串,当 xargs 分析到这个字符串时,就会停止继续工作。
-p:在执行每个命令的参数时,都会询问用户的意思。
-n:后面接次数,每次 command 命令执行时,要使用几个参数。
当 xargs 后面没有接任何命令时,默认是以 echo 进行输出。
9. split:
功能:split 可以将一个大文件,根据文件大小或行数来拆分,将大文件拆分为小文件快速又有效。
用法:# split [-bl] file PREFIX
参数:
-b: 后接要拆分的文件大小,可加单位,例如b,k,m等。
-l:按行数进行拆分。
例如:
[root@linux ~]# cd /tmp; split -b 300k /etc/termcap termcap
[root@linux tmp]# ls termcap*
termcapaa termcapab termcapac
# 文件名可以随意取的。只要写上前导文字,就会以 xxxaa, xxxab, xxxac 等方式来建立小文件。
例二:如何将上面的3个小文件合成一个文件,文件名为 termcapback
# cat termcap* >> termcapback
# 就用数据流重导向。
阅读(911) | 评论(0) | 转发(0) |