文档章节

常用文本工具cut、wc、sort、uniq、tr

阿dai学长
 阿dai学长
发布于 2017/06/30 17:03
字数 1542
阅读 60
收藏 1

8.10 shell特殊符号&cut命令

特殊符号

  • “*” 代表零个或多个字符
  • “?” 代表一个字符
  • “#” 注释符号
  • “\” 脱意符号
  • “|” 管道符
  • “$” 该符号与“!”合用“!$”表示上一条命令中的最后一个变量
  • “;” 分隔符,在一行中运行两个及两个以上的命令时使用
  • “~” 用户的家目录(root用户“/root”,普通用户“/home/username”)
  • “&” 如果想把一条命令直接放到后台运行的话,可以在命令行加上这个符号(通常用于运行时间非常长的命令)
  • “[]” 中括号中间为字符组合,代表中间字符中的任意一个。

cut命令

cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。
说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

语法: cut -d ‘分隔符’ [-cf] n [filename] (这里n是正整数)
-d:指定分隔符号
-f:指定第几段
-c:后面只有一个数字表示截取第几个字符;后面跟一个数字区域,表示截取从几到几(该选项不和d,f共同使用)

[root@adai003 tmp]# cut -c1 1.txt |head -n2
r
b
[root@adai003 tmp]# cut -c1,3 1.txt |head -n2
ro
bn
[root@adai003 tmp]# cut -f1,3 -d ':' 1.txt |head -n2
root:0
bin:1
[root@adai003 tmp]# cut -f1-3 -d ':' 1.txt |head -n2
root:x:0
bin:x:1

8.11 sort、wc、uniq命令

sort命令

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

语法: sort [-t 分隔符] [options] [filename]
Options:
-t:指定分隔符
-n:使用纯数字排序(系统默认所有字母为0)
-r:反向排序
-u:=unique 去重复
-kn1,n2:由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序(n1 < n2)
sort不加任何选项,则从首字符向后,依次以ASCⅡ码值进行比较,最后将它们按升续输出。

[root@adai003 tmp]# head -n3 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@adai003 tmp]# head -n3 1.txt |sort
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

wc命令

wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数。

语法: wc [options] [filename]
Options:
-l:=line 统计行数
-m:=member 统计字符数
-w:=Word 统计词数

[root@adai003 tmp]# wc -l !$
wc -l 2.txt
2 2.txt
[root@adai003 tmp]# wc -m 2.txt
10 2.txt
[root@adai003 tmp]# cat !$
cat 2.txt
1234
qwer
[root@adai003 tmp]# cat -A 2.txt
1234$
qwer$
[root@adai003 tmp]# wc -w 2.txt
4 2.txt
[root@adai003 tmp]# cat 2.txt
1234 456 789,10
qwer

说明: wc -m会统计文件内所有字符,包括隐藏的换行符“&”;wc -w是以空格作为分隔符进行词组统计的。

uniq命令(unique)

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用(即:去重复)。

语法: uniq [options] [filename]
Options:
-c:=count 在每列旁边显示该行重复出现的次数

[root@adai003 tmp]# cat !$
cat 2.txt
1234
456 789,10
1234
qwer
456
[root@adai003 tmp]# uniq -c 2.txt
      1 1234
      1 456 789,10
      1 1234
      1 qwer
      1 456
[root@adai003 tmp]# sort 2.txt |uniq -c
      2 1234
      1 456
      1 456 789,10
      1 qwer

说明: 直接使用uniq命令,2.txt内容显示并没有变化,使用sort排序后再用uniq命令,重复行被合并,即:在对文件进行去重之前需要先进行排序!

8.12 tee、tr、split命令

tee命令

tee命令用于将数据重定向到文件,会删除文件内原有内容,与“>”不同的是,tee会把定向的文件内容显示出来。

语法: tee [options] [filename]
Options:
-a:向文件中重定向时使用追加模式(=“>>”)

[root@adai003 tmp]# cat 3.txt
00000000000
[root@adai003 tmp]# sort 2.txt |uniq -c |tee 3.txt
      2 1234
      1 456
      1 456 789,10
      1 qwer
[root@adai003 tmp]# cat 3.txt
      2 1234
      1 456
      1 456 789,10
      1 qwer
      [root@adai003 tmp]# sort 2.txt |uniq -c |tee -a 3.txt
      2 1234
      1 456
      1 456 789,10
      1 qwer
[root@adai003 tmp]# cat 3.txt
      2 1234
      1 456
      1 456 789,10
      1 qwer
      2 1234
      1 456
      1 456 789,10
      1 qwer

tr命令

tr命令可以对来自标准输入的字符进行替换、压缩和删除,它可以将一个字符变成另一个字符,也可以将一组字符变成另一组字符。

语法: tr [源字符] [目标字符]

[root@adai003 tmp]# echo "adailinux" |tr 'a' 'A'
AdAilinux   替换一个字符
[root@adai003 tmp]# echo "adailinux" |tr '[al]' '[AL]'
AdAiLinux   替换多个字符
[root@adai003 tmp]# echo "adailinux" |tr '[a-z]' '[A-Z]'
ADAILINUX

split命令

split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

语法: split [options] [filename]
-b:指定每一输出档案的大小,默认单位为 byte,可自定义单位,如 split -b 100M filename
-l:指定每一个输出档案的行数多少
eg1: 指定大小

[root@adai003 tmp]# split -b 100 1.txt
[root@adai003 tmp]# ls
xaa
xab
xac
xad
[root@adai003 tmp]# rm -rf x*
[root@adai003 tmp]# split -b 100 1.txt adai.  
可以指定文件前缀!
[root@adai003 tmp]# ls
adai.aa 
adai.ab
adai.ac
adai.ad

eg2: 指定行数

[root@adai003 tmp]# wc -l 1.txt
20 1.txt
[root@adai003 tmp]# split -l 5 1.txt
[root@adai003 tmp]# ls
xaa
xab
xac
xad
[root@adai003 tmp]# wc -l x*
  5 xaa
  5 xab
  5 xac
  5 xad
 20 总用量

8.13 shell特殊符号(下)

命令连接符: “||”、“&&”、“;”

  • command1 ; command2 : 不管command1是否执行成功都会执行command2
  • command1 && command2 : 只有command1执行成功后才会执行command2
  • command1 || command2 : 表示command1执行成功后,command2不执行,否则执行command2

© 著作权归作者所有

阿dai学长
粉丝 71
博文 238
码字总数 315795
作品 0
海淀
运维
私信 提问
day03:shell特殊符号及常用文本工具cut sort wc uniq tr

本节会介绍:cut sort wc uniq tee tr split等文档处理工具: 1、shell特殊符号:常用的符号如下: *:表示零个或多个任意字符: ?:表示一个任意字符: #:表示注释符号(shell脚本中常用):...

芬野de博客
2018/12/20
0
0
8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee

五周第五次课 8.10 shell特殊符号cut命令 8.11 sortwcuniq命令 8.12 teetrsplit命令 8.13 shell特殊符号下 8.10 shell特殊符号cut命令 cut命令 8.11 sortwcuniq命令 sort-wc-uniq命令 特殊符...

wb_rambo123
2018/01/12
0
0
8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下

8.10 shell特殊符号cut命令 8.11 sortwcuniq命令 8.12 teetrsplit命令 8.13 shell特殊符号下 8.10 shell特殊符号cut命令 * 任意个任意字符? 任意一个字符# 注释字符 脱义字符| 管道符 几个和...

JasonYan86
2018/06/29
0
0
linux文本常用shell工具

下面将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用的; 我对shell脚本使用的原则...

captaing
2017/06/29
0
0
linux shell基础-3

特殊符号 cut sort wc uniq tee tr split 特殊符号 * 任意个任意字符 ? 任意一个字符 注释字符 脱义字符 | 管道符 cut cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示...

arvinlinux
2017/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部