1.grep命令可以从一个或者多个文件中搜索特定的字符串模式,
其一般格式为:grep pattern files
例如,
要从文件test中寻找每个unix所在的行:grep unix test
有用的选项有:
-i :表示匹配过程中不区分大小写字母。
-v :显示不包含字符的行。
-l :只给出包含给定模式的文件列表,而不给出具体的行。
-n :文件中符号指定模式的每一行前都加上该行在文件中的相对行。
-s :Suppress error messages about nonexistent or unread-able files.
$ ls -l *.sql > test.txt
$ grep -isn oracle test.txt
1:-rw-r--r-- 1 oracle dba 5616 Nov 29 15:50 TFSODEP8.sql
2:-rw-r--r-- 1 oracle dba 11073 Nov 1 11:01 account_defs.sql
3:-rw-r--r-- 1 oracle dba 7236 Aug 15 17:21 cold_backup_command.sql
4:-rw-r--r-- 1 oracle dba 883 Aug 15 17:20 coldbakup.sql
5:-rw-r--r-- 1 oracle dba 4748 Nov 1 11:35 credit_defs.sql
6:-rw-r--r-- 1 oracle dba 0 Nov 1 14:00 currentdeposit_defs.sql
7:-rw-r--r-- 1 oracle dba 4292 Nov 1 13:44 customer_defs.sql
8:-rw-r--r-- 1 oracle dba 3527 Nov 2 11:35 del_table.sql
9:-rw-r--r-- 1 oracle dba 31170 Nov 29 15:56 genuserdef.sql
10:-rw-r--r-- 1 oracle dba 12589 Nov 2 11:32 get_table.sql
11:-rw-r--r-- 1 oracle dba 10509 Nov 1 11:01 get_table1.sql
12:-rw-r--r-- 1 oracle dba 1004 Nov 1 10:57 get_user.sql
13:-rw-r--r-- 1 oracle dba 2257 Jul 12 08:43 p.sql
14:-rw-r--r-- 1 oracle dba 9376 Nov 2 11:33 service_def.sql
15:-rw-r--r-- 1 oracle dba 2491 Nov 1 13:45 serviceorder_defs.sql
16:-rw-r--r-- 1 oracle dba 1363 Nov 1 13:45 staff_defs.sql
17:-rw-r--r-- 1 oracle dba 32811 Nov 2 11:35 staff_del.sql
18:-rw-r--r-- 1 oracle dba 4021 Nov 29 15:20 tfsbgseg.sql
19:-rw-r--r-- 1 oracle dba 9309 Nov 29 15:34 tfsscons.sql
20:-rw-r--r-- 1 oracle dba 9468 Nov 29 15:34 tfstcons.sql
21:-rw-r--r-- 1 oracle dba 2235 Nov 1 10:57 wacos_defs.sql
$ grep -l oracle *
backup1.rcv
backup2.rcv
backup4.rcv
cold_backup_command.sql
coldbakup.sql
genuserdef.sql
initENCLE.ora
itdb.dmp
nohup.out
test.txt
test.txt.new
$
2.sort命令默认情况下,sort取出指定输入文件的每一行,将它们按升序排列,特殊字符按照它们的内部编码排序。
sort有许多选项,经常用的有:
-u选项:告诉sort命令,在输出结果中去除重复的行。
-r选项:颠倒排列顺序。
-o选项:默认情况下,sort把输出结果写入标准输出。要把结果写入文件,可以使用-o选项指定输出文件。
-n选项:表示把行中的第一个字段当作数值,数据按算术方法排序。如果用户想用第二个字段排序,则可以使用+1n来跳过第一个字段。
-t选项:默认情况下,sort认为要跳跃的字段之间用空格或者制表符分隔,用了-t选项后,跟在-t后的字符被当作分隔符。
$ more test.txt
aaa
ccc
ccc
ccc
ddd
bbb
eee
123
$ sort test.txt
123
aaa
bbb
ccc
ccc
ccc
ddd
eee
$ sort -u test.txt
123
aaa
bbb
ccc
ddd
eee
$ sort -r test.txt
eee
ddd
ccc
ccc
ccc
bbb
aaa
123
$ sort -r test.txt -o sort.txt
$ more sort.txt
eee
ddd
ccc
ccc
ccc
bbb
aaa
123
$ sort -n test.txt
aaa
bbb
ccc
ccc
ccc
ddd
eee
123
$ sort +1n test.txt
123
aaa
bbb
ccc
ccc
ccc
ddd
eee
$ sort -ta test.txt
123
aaa
bbb
ccc
ccc
ccc
ddd
eee
$
3.如果要在文件中查找重复的行,uniq命令会很有用
该命令一般格式为:uniq in_file out_file 该格式中,uniq把in_file复制到out_file,处理过程中,去掉其中的重复行,uniq对重复行的定义是完全匹配的连续行。如果不指定out_file,结果就写入标准输出。
-d选项:它告诉uniq把文件中的重复行写入out_file,不管它们在文件中连续出现多少次,这样的连续行只写一次
-c选项:带-c选项后,每行最前面显示该行在输入文件中出现的次数。
$ more test.txt
aaa
ccc
ccc
ccc
ddd
bbb
eee
123
$ uniq test.txt
aaa
ccc
ddd
bbb
eee
123
$ uniq -d test.txt
ccc
$ uniq -c test.txt
1 aaa
3 ccc
1 ddd
1 bbb
1 eee
1 123
$
阅读(1110) | 评论(0) | 转发(0) |