`
icepp
  • 浏览: 10431 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

linux常用的一些小工具

阅读更多

xargs

 这是给命令传递参数的一个过滤器, 也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块, 以方便过滤器和命令进行处理. 由此这个命令也是后置引用的一个强有 力的替换. 在一般使用过多参数的命令替换失败的时候,用xargs 来替换它一般都能成功.
通常情况下, xargs 从管道或者stdin中读取数据, 但是它也能够从文件的输出中读取数据.

xargs的默认命令是 echo. 这意味着通过管道传递给xargs的输入将会包含换行和空白, 不过通过xargs的处理, 换行和空白将被空格取代.

ls | xargs -n 8 echo 以每行8列的形式列出当前目录下的所有文件.

 

 

expr


 通用求值表达式: 通过给定的操作(参数必须以空格分开)连接参数,并对参数求值.可以使算术操作, 比较操作, 字符串操作或者是逻辑操作.

 expr 3 + 5   返回 8
 expr 5 % 3   返回 2
 expr 1 / 0  返回错误消息, expr: division by zero不允许非法的算术操作.
 expr 5 \* 3 返回 15

 在算术表达式expr中使用乘法操作时, 乘法符号必须被转义.
 y=`expr $y + 1`

 增加变量的值, 与 let y=y+1 和 y=$(($y+1)) 的效果相同. 这是使用算术表达式的  一个例子.
 z=`expr substr $string $position $length`

 在位置$position上提取$length长度的子串.

 


sort


 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用 -m 选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的 info 页.

 


uniq


 这个过滤器将会删除一个已排序文件中的重复行.这个命令经常出现在 sort命令的管道后边.
 1 cat list-1 list-2 list-3 | sort | uniq > final.list
 2 # 将3个文件连接起来,
 3 # 将它们排序,
 4 # 删除其中重复的行,
 5 # 最后将结果重定向到一个文件中.

 


cut


 一个从文件中提取特定域的工具. 这个命令与 awk 中使用的 print $N命令很相似, 但是更受限. 在脚本中使用cut命令会比使用 awk 命令来得容易一些. 最重要的选项就是 -d (字段定界符) 和 -f (域分隔符) 选项.

 使用 cut 来获得所有mount上的文件系统的列表:
 1 cut -d ' ' -f1,2 /etc/mtab

 使用 cut 命令列出 OS 和 kernel的版本:
 1 uname -a | cut -d" " -f1,3,11,12

 使用 cut 命令从 e-mail 中提取消息头:
 bash$ grep '^Subject:' read-messages | cut -c10-80
 Re: Linux suitable for mission-critical apps?
 MAKE MILLIONS WORKING AT HOME!!!
 Spam complaint
 Re: Spam complaint

 

 

paste
 将多个文件,以每个文件一列的形式合并到一个文件中, 合并后的文件没列就是原来的一个文件.对于创建系统log文件来说, 使用 cut 命令与 paste 命令相结合是非常有用的.

 


join


 这个命令与 paste 命令属于同类命令, 但是它能够完成某些特殊的目地. 这个强力工具能够以一种特殊的形式来合并2个文件, 这种特殊的形式本质上就是一个关联数据库的简单版本.

 join 命令只能够操作2个文件, 它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来, 并且将结果输出到stdout. 被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配.

 1 File: 1.data
 2
 3 100 Shoes
 4 200 Laces
 5 300 Socks

 1 File: 2.data
 2
 3 100 $40.00
 4 200 $1.00
 5 300 $2.00

 bash$ join 1.data 2.data
 File: 1.data 2.data

 100 Shoes $40.00
 200 Laces $1.00
 300 Socks $2.00

 注意: 在输出中标记域将只会出现一次.

 

tr


 字符转换过滤器.

 注意: 必须使用引用或中括号, 这样做才是合理的. 引用可以阻止 shell 重新解释出现在tr命令序列中的特殊字符.中括号应该被引用起来防止被shell扩展.

 无论 tr "A-Z" "*" <filename  还是 tr A-Z \* <filename 都可以将 filename 中的大
 写字符修改为星号(写到 stdout).但是在某些系统上可能就不能正常工作了, 而 tr A-Z '
 [**]' 在任何系统上都可以正常工作.

 -d 选项删除指定范围的字符.
 1 echo "abcdef"                 # abcdef
 2 echo "abcdef" | tr -d b-d     # aef
 3
 4
 5 tr -d 0-9 <filename
 6 # 删除 "filename" 中所有的数字.

 --squeeze-repeats (或 -s) 选项用来在重复字符序列中除去除第一个字符以外的所有字
 符. 这个选项在删除多余的whitespace 的时候非常有用.
 bash$ echo "XXXXX" | tr --squeeze-repeats 'X'
 X

 -c "complement"  选项将会反转匹配的字符集. 通过这个选项, tr将只会对那些不匹配的字符起作用.
 bash$ echo "acfdeb123" | tr -c b-d +
 +c+d+b++++

 注意 tr 命令支持 POSIX 字符类. [1]
 bash$ echo "abcd2ef1" | tr '[:alpha:]' -
 ----2--1

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics