Linux 命令之head, tail, tr, sort, uniq, grep

head [filename]
head -n 11 [filename]  -> First 11 lines  
head -c 20 [filename]  -> First 20 characters 

head默认为显示前10行。

tail [filename]
tail -n 11 [filename]  -> Last 11 lines  
tail -c 20 [filename]  -> Last 20 characters  

如果要显示文本的第10-22行可以使用:

1 head -n22 | tail -n12                                                                     

tr的用法为:

$ tr [OPTION] SET1 [SET2]

如果SET1 和 SET2都给出,而且OPTION不是-d,那么就是将第一个集合中的元素替换为第二个集合中的元素。

$ tr a-z A-Z
thegeekstuff
THEGEEKSTUFF

如果需要将空格替换为一个tab, 如果存在连续的空格,需要加-s选项,否则默认将每个空格都替换为一个tab:

$ echo "This   is   for testing" | tr -s [:space:] '	'
This	is	for	testing

如果要删除某个元素,可以使用(如删除所有数字):

$ echo "my username is 432234" | tr -d [:digit:]
my username is

如果需要删除除了数字以外的其他字符,可以使用-c选项:

$ echo "my username is 432234" | tr -cd [:digit:]
432234

如果要将文件的所有行合并为一行,可以使用:

$ tr -s '
' ' ' < file.txt

sort有几个常用选项:

-n  按数字排序

-r  逆序

-k m,n  按第m-n个field排序

-t  改变文件的分隔符

如要对一个以tab为分隔符的文本按第二个field进行排序,可以使用:

 $ sort -k2,2 -t $'	' phonebook 
 Doe, John    555-1234
 Fogarty, Suzie    555-2314
 Doe, Jane    555-3214
 Avery, Cory    555-4132
 Smith, Brett    555-4321

这里用$' '表示tab

命令uniq的几个常用选项为:

-c 输出每行连续出现的次数

-d 只输出连续出现的行,对于连续出现多次的行只会输出一次

-D  和-d的不同点在于会完整的输出符合条件的行

-u 只输出没有连续出现的行

-i 比较时忽略大小写

-w n 只比较前n个字符

-f n 忽略比较前n个filed

-s n 忽略比较前n个字符

grep常用方法:

如果在一个文件中查找一个字符串,可以用:

grep "literal_string" filename

如果在多个文件中查找指定字符串:

grep "string" FILE_PATTERN

-i选项忽略大小写

在文件中查找多个字符串:

grep "REGEX" filename

-w选项用来只查找指定的WORD,而忽略WORD作为字串的情况

-c 选项用来查看出现次数

-v选项用来输出没有出现指定字符串的行

-e 选项可以用来指定多个字符串:

$ grep -v -e "a" -e "b" -e "c" test-file.txt

-l(小写的L)选项用来输出含有指定字符串的文件名:

$ grep -l this demo_*
demo_file
demo_file1

另外,还有-A,-B,-C等选项。

原文地址:https://www.cnblogs.com/Stomach-ache/p/4161169.html