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 脚本”).