天天看点

【shell命令】文本操作命令(grep、cut、sort、uniq、tee、paste、wc、tr、seq、printf、awk、sed、xargs)

grep命令

grep是行过滤工具;用于根据关键字进行行过滤

语法:

grep [选项] '关键字' 文件名
           

常见选项

  • -i: 不区分大小写
  • -v: 查找不包含指定内容的行,反向选择
  • -w: 按单词搜索
  • -o: 打印匹配关键字
  • -c: 统计匹配到的行数
  • -n: 显示行号
  • -r: 逐层遍历目录查找
  • -A: 显示匹配行及后面多少行
  • -B: 显示匹配行及前面多少行
  • -C: 显示匹配行前后多少行
  • -l:只列出匹配的文件名
  • -L:列出不匹配的文件名
  • -e: 使用正则匹配
  • -E:使用扩展正则匹配
  • ^key:以关键字开头
  • key$:以关键字结尾
  • ^$:匹配空行
  • --color=auto :可以将找到的关键词部分加上颜色的显示

案例

# grep -i root 1.txt 					忽略大小写匹配包含root的行
# grep -w ftp 1.txt 					精确匹配ftp单词
# grep -w hello 1.txt  					精确匹配hello单词;自己添加包含hello的行到文件
# grep -wo ftp 1.txt  					打印匹配到的关键字ftp(-o只打印关键字本身)
# grep -n root 1.txt  					打印匹配到root关键字的行好
# grep -ni root 1.txt  					忽略大小写匹配统计包含关键字root的行
# grep -nic root 1.txt 					忽略大小写匹配统计包含关键字root的行数
# grep -i ^root 1.txt  					忽略大小写匹配以root开头的行
# grep bash$ 1.txt  					匹配以bash结尾的行
# grep -n ^$ 1.txt 				        匹配空行并打印行号
# grep ^# 1.txt 		                        匹配以#号开头的行
# grep -v ^# 1.txt 	                                匹配不以#号开头的行
# grep -A 5 mail 1.txt  	                        匹配包含mail关键字及其后5行(匹配了这一行, 前面5行也打印出来)
# grep -B 5 mail 1.txt  				匹配包含mail关键字及其前5行
# grep -C 5 mail 1.txt 					匹配包含mail关键字及其前后5行
           

cut命令

cut是列截取工具,用于列的截取

语法:

cut 选项  文件名
           

常见选项

  • -c: 以字符为单位进行分割,截取
  • -d: 自定义分隔符,默认为制表符\t
  • -f: 与-d一起使用,指定截取哪个区域

案例

# cut -d: -f1 1.txt 			以:冒号分割,截取第1列内容
# cut -d: -f1,6,7 1.txt 	以:冒号分割,截取第1,6,7列内容
# cut -c4 1.txt 				截取文件中每行第4个字符
# cut -c1-4 1.txt 			截取文件中每行的1-4个字符
# cut -c4-10 1.txt 			截取文件中每行的4-10个字符
# cut -c5- 1.txt 				从第5个字符开始截取后面所有字符
           

sort工具

sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

选项

  • -u :去除重复行
  • -r :降序排列,默认是升序
  • -o : 将排序结果输出到文件中,类似重定向符号>
  • -n :以数字排序,默认是按字符排序
  • -t :分隔符
  • -k :以第N列作为排序条件
  • -b :忽略前导空格。
  • -R :随机排序,每次运行的结果均不同

案例

# sort -n -t: -k3 1.txt 			按照用户的uid进行升序排列
# sort -nr -t: -k3 1.txt 			按照用户的uid进行降序排列
# sort -n 2.txt 						按照数字排序
# sort -nu 2.txt 						按照数字排序并且去重
# sort -n 2.txt -o 3.txt 			按照数字排序并将结果重定向到文件
# sort -R 2.txt 
# sort -u 2.txt 
           

uniq工具

uniq用于去除连续的重复行

常见选项

  • -i: 忽略大小写
  • -c: 统计重复行次数
  • -d:只显示重复行

案例

# uniq 2.txt 
# uniq -d 2.txt 
# uniq -dc 2.txt