几个不错的linux命令

主要内容:sort命令、uniq命令、join命令、cut命令、paste命令、split命令、tr命令、tar命令
sort 命令:
Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常用的文件排序工具;
sort命令与awk一样,将文件看作记录和域进行处理,默认的域分隔符是空格符,sort命令的格式为:
sort [选项] [输入文件]
选项 意义
-c 测试文件是否已经被排序 complete
-k 指定排序的域 k1 k2nr 往后加命令即可
-m 合并两个已排序的文件 merge
-n 根据数字大小进行排序 number
-o [输出文件] 将输出写到指定的文件,相当于将输出重定向到指定文件 open
-r 将排序结果逆向 reverse
-t 改变域分隔符 eg:-t: 一般最新定义
-u 去除结果中的重复行 unique -u

uniq 命令
uniq命令用于去除文本文件中的重复行,这类似于sort命令的-u选项
sort -u命令时,所有重复记录都被去掉
uniq命令去除的重复行必须是连续重复出现的行,中间不能夹杂任何其他文本行

选项 意义
-c 打印每行在文本中重复出现的次数 count
-d 只显示有重复的记录,每个重复记录只出现一次
-u 只显示没有重复的记录 unique

join 命令
join—实现两个文件中记录的连接操作,连接操作将两个文件中具有相同域的记录选择出来,再将这些记录所有的域放到一行(包含来自两个文件的所有域)
join [选项] 文件1 文件2
选项 意义
-a1或-a2 除了显示以共同域进行连接的结果外,-a1表示还显示第1个文件中没有共同域的记录,-a2则表示显示第2个文件中没有共同域的记录
-i 比较域内容时,忽略大小写差异
-o 设置结果显示的格式
-t 改变域分隔符
-v1或-v2 跟-a选项类似,但是,不显示以共同域进行连接的结果

-1和-2 -1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域
当两个文件进行连接时,文件1中的记录可能在文件2中找不到共同域,反过来,文件2中也可能存这在样的记录,join命令的结果默认是不显示这些未进行连接的记录的
-a和-v选项就是用于显示这些未进行连接的记录,-a1和-v1指显示文件1中的未连接记录,而-a2和-v2指显示文件2中的未连接记录
-a和-v选项的区别在于:-a选项显示以共同域进行连接的结果,而-v选项则不显示这些记录

当两个文件进行连接时,文件1中的记录可能在文件2中找不到共同域,反过来,文件2中也可能存在这样的记录,join命令的结果默认是不显示这些未进行连接的记录的
-a和-v选项就是用于显示这些未进行连接的记录,-a1和-v1指显示文件1中的未连接记录,而-a2和-v2指显示文件2中的未连接记录
-a和-v选项的区别在于:-a选项显示以共同域进行连接的结果,而-v选项则不显示这些记录

join命令默认显示连接记录在两个文件中的所有域,而且是按顺序来显示的。-o选项用于改变结果显示的格式
join命令默认比较文件1和文件2的第1域,如果我们需要通过其他域进行连接,就需要使用-1和-2选项,-1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域
join -t: -i -1 3 -2 1 TEACHER1.db TEACHER_HOBBY.db

cut 命令
cut命令用于从标准输入或文本文件中按域或行提取文本
选项 意义
-c 指定提取的字符数,或字符范围 count
-f 指定提取的域数,或域范围 field
-d 改变域分隔符
cut -c1-5 TEACHER.db
cut -d: -f1,4 TEACHER.db
cut -d: -f1-3 TEACHER.db

paste 命令
paste命令用于将文本文件或标准输出中的内容粘贴到新的文件,它可以将来自于不同文件的数据粘贴到一起,形成新的文件
paste [选项] 文件1 文件2
选项 意义
-d 默认域分隔符是空格或Tab键,设置新的域分隔符
-s 将每个文件粘贴成一行
- 从标准输入中读取数据

paste命令的“-”选项比较特殊,当paste命令从标准输入中读取数据时,“-”选项才起作用
eg:[root@jselab shell-book]# ls | paste -d” ” – - – - – #从标准输入读取数据
anotherres.sh array_eval2.sh colon.sh example execerr.sh #每行显示5个文件名
execin.sh exec.sh FILE1 FILE2 forever.sh
hfile loggg loggg1 loopalias.sh matrix.sh
newfile nokillme.sh part1 part2 part3
parttotal refor.sh reif.sh selfkill.sh sleep10.sh
sleep55.sh stack.sh subsenv.sh subsep.sh subsig.sh
subsparallel.sh subspipe.sh subsvar.sh TEACHER.db test.sh
testvar.sh traploop.sh

split 命令
split命令用于将大文件切割成小文件,split命令可以按照文件的行数、字节数切割文件,并能在输出的多个小文件中自动加上编号
split [选项] 待切割的大文件 输出的小文件

选项 意义
-或-l 此两个选项等价,都用于指定切割成小文件的行数
-b 指定切割成小文件的字节
-C 与-b选项类似,但是,切割时尽量维持每行的完整性

tr 命令
tr命令实现字符转换功能,其功能类似于sed命令,但是,tr命令比sed命令简单
tr命令能实现的功能,sed命令都可以实现
tr [选项] 字符串1 字符串2 <输入文件
tr命令要么将输入文件重定向到标准输入,要么从管道读入数据,记住tr命令的输入文件之前需要加上“<”符号
选项 意义
-c 选定字符串1中字符集的补集,即反选字符串1中的字符集
-d 删除字符串1中出现的所有字符
-s 删除所有重复出现的字符序列,只保留一个

tr命令的-d选项只需跟一个字符串,它表示删除字符串中出现的所有字符
tr -d A-Z tr命令的-s选项用于删除所有重复出现的字符序列,只保留一个,即将重复出现的字符串压缩为一个字符spress
tr -s “[a-z],[A-Z]” tr命令也可以加上字符串1和字符串2,将字符串1用字符串2来替换
tr “[a-z]” “[A-Z]” tr命令的-c选项用于选定字符串1中字符集的补集,即反选字符串1中的字符集contract
tr -cs “[a-z][A-Z]” “[\012*]”

tar 命令
tar命令是Linux的归档命令,tar命令可以将文件或目录打成一个包
tar [选项] 文件名或目录名
选项 意义
-c 创建新的包 create
-r 为包添加新的文件 refresh
-t 列出包内容
-u 更新包中的文件,若包中无此文件,则将该文件添加到包中
-x 解压缩文件
-f 使用压缩文件或设备,该选项通常是必选的 file
-v 详细报告tar处理文件的信息 view
-z 用gzip压缩和解压缩文件,若加上此选项创建压缩包, gzip
那么解压缩时也需要加上此选项

-f是必选选项,-c选项用于创建包
tar -cf db.all *.db
-r选项可将文件添加到包
-t选项用于查看包的内容
tar -tf db.all

tar命令的另一重要功能就是解压缩,以下两种解压缩命令足以满足一般应用要求:
tar -xvf 压缩包名称 #解压非gzip格式的压缩包
tar -zxvf 压缩包名称 #解压gzip格式的压缩包
tar -zxvf db.all.gz
gzip命令是Linux系统中常用的压缩工具,它可以对tar命令创建的包进行压缩,但是,gzip所生成的压缩包使用tar -zxvf命令就可解压缩






文章来自: http://www.tsingpost.com/articles/201403/495.html

你可能感兴趣的:(linux,脚本)