# 常用命令

# sort命令

sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据治理工具,用来治理内容类似数据库记录的文件。

Sort命令将逐行对文件中的内容进行排序,假如两行的首字符相同,该命令将继续比较这两行的下一字符,假如还相同,将继续进行比较。

# 语法

sort [选项] 文件

说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则表示排序内容来自标准输入。

sort排序是根据从输入行抽取的一个或多个要害字进行比较来完成的。排序要害字定义了用来排序的最小的字符序列。缺省情况下以整行为要害字按ASCII字符顺序进行排序。

改变缺省设置的选项主要有:

  • - m 若给定文件已排好序,合并文件。
  • - c 检查给定文件是否已排好序,假如它们没有都排好序,则打印一个出错信息,并以状态值1退出。
  • - u 对排序后认为相同的行只留其中一行。
  • - o 输出文件 将排序输出写到输出文件中而不是标准输出,假如输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。

改变缺省排序规则的选项主要有:

  • - d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
  • - f 将小写字母与大写字母同等对待。
  • - I 忽略非打印字符。
  • - M 作为月份比较:“JAN”<“FEB”<¼ <“DEC”。
  • - r 按逆序输出排序结果。
  • +posl - pos2 指定一个或几个字段作为排序要害字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则要害字为从posl到行尾。字段和字符的位置从0开始。
  • - b 在每行中寻找排序要害字时忽略前导的空白(空格和制表符)。
  • - t separator 指定字符separator作为字段分隔符。

# uniq命令

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

# 语法

uniq [选项] 文件

说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。假如输入文件用“- ”表示,则从标准输入读取。

该命令各选项含义如下:

  • - c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
  • - d 只显示重复行。
  • - u 只显示文件中不重复的各行。
  • - n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
  • n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
  • - f n 与- n相同,这里n是字段数。
  • - s n 与+n相同,这里n是字符数。

# 取重复数据

sort domains.log | uniq -d  > out.log  不带参数时过滤重复行

# 文件比较

comm [-123] file1  file2

# 时间操作

同步时间

ntpdate time.nist.gov

date命令将日期设置为2014年6月18日

date -s 06/18/14

将时间设置为14点20分50秒

date -s 14:20:50

# 查找字符串

如果你想在当前目录下 查找"hello,world!"字符串,可以这样:

grep -rn "hello,world!" ./
./ : 表示路径为当前目录.
-r 是递归查找
-n 是显示行号
-i 不区分大小写

grep 后面带上-A -B -C 参数可以多显示几行内容

grep 'xxx' -A 5 可以显示匹配内容以及后面的5行内容
grep 'xxx' -B 5 可以显示匹配内容以及前面的5行内容
grep 'xxx' -C 5 可以显示匹配内容以及前后面的5行内容

# 显示文件内容

显示文件X行

sed -n 'xp' filename     

显示文件X行到Y行的内容:

sed -n 'x,yp' filename

# 分割文件

功能说明:切割文件。
语  法:

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参  数:

-<行数>或-l<行数>  指定每多少行就要切成一个小文件。
-b<字节>  指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节>  与-b参数类似,但切割时尽量维持每行的完整性。
--help  显示帮助。
--version  显示版本信息。

[输出文件名]  设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
使用例子:

split -b 100m 1111.log (按照字节分隔)
split -l 1000000 1111.log(按照行数分隔)
split -l 100000 filename.csv filename_pre_

# 后台执行文件

在所有命令末端增加 &