首页 > 代码库 > Linux 命令之head, tail, tr, sort, uniq, grep
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-ZthegeekstuffTHEGEEKSTUFF
如果需要将空格替换为一个tab, 如果存在连续的空格,需要加-s选项,否则默认将每个空格都替换为一个tab:
$ echo "This is for testing" | tr -s [:space:] ‘\t‘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 ‘\n‘ ‘ ‘ < file.txt
sort有几个常用选项:
-n 按数字排序
-r 逆序
-k m,n 按第m-n个field排序
-t 改变文件的分隔符
如要对一个以tab为分隔符的文本按第二个field进行排序,可以使用:
$ sort -k2,2 -t $‘\t‘ phonebook Doe, John 555-1234 Fogarty, Suzie 555-2314 Doe, Jane 555-3214 Avery, Cory 555-4132 Smith, Brett 555-4321
这里用$‘\t‘表示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_filedemo_file1
另外,还有-A,-B,-C等选项。
Linux 命令之head, tail, tr, sort, uniq, grep