有用的 Shell 编程工具

阳光1990 on April 27, 2016

1、cut:从输入的行中提取指定的部分,不改变源文件

  • 带有 -c 选项的命令提取一行中指定长度范围的字符。

cut -c3-6 file.txt

提取文件 file.txt 中每一行的第 3-6 个字符

  • 带有-f 选项的命令提取输入行中指定的字段,字段和字段的分隔符由 -d 参数指定。如果没有 -d 选项,那么默认使用制表符TAB作为分隔符。

cut -d" " -f2 file.txt

提取并输出文件 file.txt 中每一行的第2个字段,每个字段是由空格隔开的。注意 -d 选项后,双引号之间为空格。

2、diff:找出两个文件的不同部分

diff file1 file2

3、sort:接受输入行,并对其按照字母顺序排列,不改变源文件

  • 按照字符升序排列后输出这个文件

sort file.txt

  • 使用 -r 选项,按照字符降序排列后输出这个文件

sort -r file.txt

  • 使用 -k 选项,按照指定字段排序

sort -k2 -r file.txt

按照文件 file.txt 中每行的第 2 个字段(不是第2个字符)对输出行执行逆向排序

4、uniq:从已经排好序的输入行中删除重复的行

由于 uniq 命令必须在输入行已经排好顺序的情况下才成正常工作(也就说排好序后相同行是连在一起的)。使用 sort 命令结合管道完成。

sort file.txt | uniq

5、wc: 即 word counts,用来统计文件中行数,单词数以及字节数。使用选项显示某几项信息。

  • -c--bytes 显示字节数

  • -l--lines 显示行数

  • -L--max-line-length 显示最长一行的长度

  • -w--words 显示单词数

  • --help 显示帮助信息

6、substr:从字符串中提取一部分,该命令接受 3 个参数,依次是字符串(或存放有字符串的变量)、提取开始的位置、需要提取的字符数。

expr substr "Hello world" 1 5

注意,substr 必须使用 expr 进行表达式求值,因为这不是一个程序,而是 shell 内建的运算符。如果使用 expr,系统会找不到substr

7、seq:生成一个整数数列

seq 5 生成 1-5,步长为1

seq -1 3 生成 -1~3,步长为1

seq 9 -3 0 生成 9~0,步长为-3