1.6.6. 用于管道命令的小片段脚本

下面的脚本作为管道的一部分,可以做一些细致的事情。

表 1.26. 管道命令的小片段脚本列表

脚本片段(在一行内输入)命令效果
find /usr -print找出”/usr“下的所有文件
seq 1 100显示 1 到 100
| xargs -n 1 <command>把从管道过来的每一项作为参数,重复执行命令
| xargs -n 1 echo把从管道过来的,用空格隔开的项,分隔成多行
| xargs echo把从管道过来的所有行合并为一行
| grep -e <regex_pattern>从管道过来,包含有 <regex_pattern>的行,提取出来
| grep -v -e <regex_pattern>把从管道过来,不包含有 <regex_pattern>的行,提取出来
| cut -d: -f3 -把从管道过来,用 “:“分隔的第三列提取出来 (passwd 文件等。)
| awk ‘{ print $3 }’把用空格隔开的第三列提取出来
| awk -F’\t’ ‘{ print $3 }’把用 tab 键隔开的第三列提取出来
| col -bx删除退格键,扩展 tab 键为空格键
| expand -扩展 tab 键到空格键
| sort| uniq排序并删除重复行
| tr ‘A-Z’ ‘a-z’将大小字母转换为小写字母
| tr -d ‘\n’将多行连接为一行
| tr -d ‘\r’删除换行回车符
| sed ‘s/^/# /‘在每行行首增加一个”#“符
| sed ‘s/.ext//g’删除 “.ext
| sed -n -e 2p显示第二行
| head -n 2 -显示最前面两行
| tail -n 2 -显示最后两行

使用 find(1) 和 xargs(1),单行 shell 脚本能够在多个文件上循环使用,可以执行相当复杂的任务。参见 第 10.1.5 节 “查找文件的语法”第 9.3.9 节 “使用文件循环来重复一个命令”.

当使用 shell 交互模式变得太麻烦的时候,请考虑写一个 shell 脚本(参见 第 12.1 节 “Shell 脚本”).