文本处理命令 cat more less cut wc sort uniq
cat主要功能:
1.一次显示整个文件。 cat filename
2.从键盘创建一个文件。 cat > filename (只能创建新文件,不能编辑已有文件).
1 [loong@localhost ~]$ cat > test.txt
2 this is a test for cat command.^[[D
3 a
4 b
5 cc
6 de
其中^[[D是向左的箭头,本想回退一格编辑,但很可惜只能顺序输入
另外,如何结束输入呢???
在linux下:
ctrl+d:代表输入完成或者注销
ctrl+c:中断当前程序
ctrl+z:将作业放置到后台(暂停)
所以,此处应使用CTRL+D,结束输入。
3.将几个文件合并为一个文件: cat file1 file2 > file
4.追加一个文件到另一个文件末尾 cat file1 >> file2
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting 显示非打印字符,使用^和M-表示,除了LFD和TAB
2.more
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。
more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按
空格键 显示下一屏。
Enter键 显示下一行。
nf 向下移动n屏,其中n是数字。
nb 向上移动n屏,其中n是数字。
/模式 向下查找指定的字符串模式。 n 重复前面查找命令。
= 显示当前的行号。
h 显示more所有命令的帮助信息。
q 退出more。
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
more命令从前向后读取文件,因此在启动时就加载整个文件。
命令参数:
+n 从笫n行开始显示 more +3 log2012.log
-n 定义屏幕大小为n行 more -5 log2012.log
+/pattern 在每个档案显示前搜寻该字串(pattern),从该字串前两行开始显示 more +/pattern log2012.log
-s 把连续的多个空行显示为一行 more -s log2012.log
-u 把文件内容中的下画线去掉 more -u log2012.log
3.less
命令格式:
less [参数] 文件
功能:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
回车键 向下一行
空格键 向下一页
y 向上一行
b 向上一页
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
命令参数:
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
cut是一个选取命令,通常是针对“行”来进行分析的,并不是整篇信息分析的。
cut是从一行中 取出我们想要的;
(1)其语法格式为:
cut [-bn] [file] cut -b 3 ins.log ; cut -b 3-5,7 ins.log
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
cut [-c] [file] cut -c 3 ins.log cut -c -3 ins,log cut -c 3-5,7 ins.log
cut -c -3 从开始到第三个字符 cut -c 3- 从第三个字符到最后
-c :以字符为单位进行分割。
cut [-df] [file] cut -d : -f 1
cut -d : -f 1,3-5
-d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
1.以字节提取:
$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
如果我们想提取每一行的第3个字节,就这样:
$ who|cut -b 3
c
c
c
提取 3到5和 8 字节
$ who|cut -b 3-5,8
croe
croe
croe
2.以字符提取:
$ cat cut_ch.txt
星期一
星期二
星期三
星期四
$ cut -b 3 cut_ch.txt (用字节提取出错了)
?
?
?
?
$ cut -c 3 cut_ch.txt (要用字符提取)
一
二
三
四
看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。
例子如下:
$ cat cut_ch.txt |cut -b 2
?
?
?
?
$ cat cut_ch.txt |cut -nb 2
星
星
星
星
3.自定义分隔:
如果遇到空格和制表符时,怎么分辨呢?怎么办?
有时候制表符确实很难辨认,有一个方法可以看出一段空格到底是由若干个空格组成的还是由一个制表符组成的。
$ cat tab_space.txt
this is tab finish.
this is several space finish.
$ sed -n l tab_space.txt
this is tab\tfinish.$
this is several space finish.$
看到了吧,如果是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。
通过此方法即可以判断制表符和空格了。
注意,上面sed -n后面的字符是L的小写字母哦,不要看错。
(9)我应该在cut -d中用什么符号来设定制表符或空格呢?
其实cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。
如果你设定一个空格为间隔符,那么就这样:
$ cat tab_space.txt | cut -d ' ' -f 1
this
this
注意,两个单引号之间可确实要有一个空格哦,不能偷懒。
而且,你只能在-d后面设置一个空格,可不许设置多个空格,因为cut只允许间隔符是一个字符。
注意:
如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容
Linux系统中的wc(Word Count)命令的功能为统计
指定文件中的字节数、字数、行数,并将统计结果显示输出。
命令格式:
wc [选项]文件...
2.命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
3.命令参数:
# wc install.log
901 1815 40279 install.log
行数 单词数 字节数 文件名
-c 统计字节数。 wc -c ins.log
-l 统计行数。 wc -l ins.log
-m 统计字符数。这个标志不能与 -c 标志一起使用。 wc -m ins.log
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
实例2:用wc命令怎么做到只打印统计数字不打印文件名
# cat test.txt |wc -l
实例3:用来统计当前目录下的文件数
据不同的数据类型进行排序,其语法及常用参数格式:
sort [-bcfMnrtk] [源文件] [-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-u 在输出行中去除重复行 sort -u seq.txt
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。 ( 默认以文字类型排序)
sort -n number.txt
-o<输出文件> 将排序后的结果存入指定的文件。sort -r number.txt -o number.txt
-r 以相反的顺序来排序。 sort -r number.txt
-t<分隔字符> 指定排序时所用的栏位分隔字符。 sort -t ‘:’ -k 2 facebook.txt
-k 选择以哪个区间进行排序。
实例:
1.简单排序 并输出
$ cat seq.txt
banana
apple
pear
orange
$ sort seq.txt
apple
banana
orange
pear
用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。
$ Sort seq.txt > result
2.自定义排序
sort的-t选项和-k
如果有一个文件的内容是这样:
$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
这个文件有三列,列与列之间用冒号隔开了,
第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。
那么我想以水果数量来排序,也就是以第二列来排序?
sort提供了 -t 选项,后面可以设定间隔符。指定了间隔符之后,就可以用 -k 来指定列数了。
-k 2
-t ‘:’ facebook.txt (以:为分隔符 根据第二个域排序)
orange:20:3.4
banana:30:5.5
pear:90:2.3
7.uniq
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。
uniq语法
[root@www ~]# uniq [-icu]
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数
-u :只显示出一次的行列-d :仅显示重复出现的行列
实例:
1.直接使用去重命令没有任何效果
cat testfile
hello
world
friend
hello
world
hello
#uniq testfile
hello
world
friend
hello
world
hello
2.先排序文件,然后去除重复
#cat words | sort |uniq
friend
hello
world
3.排序之后删除了重复行,同时在行首位置输出该行重复的次数
#sort testfile | uniq -c
1 friend
3 hello
2 world
4. -d仅显示存在重复的行,-c并在行首显示该行重复的次数
#sort testfile | uniq -dc
3 hello
2 world
5. -u仅显示不重复的行
sort testfile | uniq -u
friend
文本处理命令 cat more less cut wc sort uniq的更多相关文章
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...
- grep,cut,wc,sort,diff,uniq,patch命令
文本处理工具: Linux上文本处理三剑客: grep,egrep,fgrep: 文本过滤工具(模式: pattern)工具; grep:基本正则表达式,-E,-F egrep:扩展正则表达式,-G, ...
- linux常用文本编缉命令(strings/sed/awk/cut)
一.strings strings--读出文件中的所有字符串 二.sed--文本编缉 类型 命令 命令说明 字符串替换 sed -i 's/str_reg/str_rep/' filename 将文件 ...
- 024:Java流实现Shell:cat 1.log | grep a | sort | uniq -c | sort -rn
本文阅读时间大约13分钟(本文实践性很强,建议pc端阅读,最好亲自实践). 参考答案 这个问题考察的是对Linux命令的熟悉程度,以及对Java中集合操作的综合运用,自从转到Java 8以后,我就一直 ...
- 文本处理工具(cut,sort,tr,grep等)
命令目录,查看某一个命令可点击直接跳转: 文件查看 cat tac rev more less 按行截取 head tail 转化内容 tr 按列操作 cut paste 分析文本 wc sort u ...
- 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed
目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...
- [转]linux sort,uniq,cut,wc命令详解
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- linux sort,uniq,cut,wc命令详解
linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...
- linux sort,uniq,cut,wc,tr命令详解
sort是在Linux里非常常用的一个命令,对指定文件进行排序.去除重复的行 sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sor ...
随机推荐
- CF - 高精度 + 贪心
Last year Bob earned by selling memory sticks. During each of n days of his work one of the two foll ...
- postgresql gin索引使用
由于属于老项目,postgresql使用版本9.6,主要解决‘%name%"查询无法使用索引问题.pg_trgm模块提供函数和操作符测定字母,数字,文本基于三元模型匹配的相似性, 还有支持快 ...
- 2019CSP复赛游记
Day 0 作为一个初三的小蒟蒻…… 什么算法都不会打…… 做一道LCA+生成树的图论题调了两个小时…… 明日裸考…… Day 1 Morning 买了两个士力架,带了一盒牛奶,准备在考场上食用(这个 ...
- python 面向对象-初识
一.分类 1.面向过程 2.面向函数 3.面向对象 二.类和对象 1.宏关 类是抽象的,对象是具体的 2.实例化 类->对象 3.类的作用 1)实例化成对象 实例化的过程,创建self对象,调用 ...
- python类型-集合
集合对象是一组无序排列的可哈希的值,集合成员可以做字典的键.集合有两种类型:可变集合,可以添加和删除元素,可变集合不是可哈希的,不能用作字典的键也不能作为其它集合中的元素:不可变集合相反,有哈希值,可 ...
- 2019杭电多校赛第九场 Rikka with Mista
Problem Description Rikka is a fervent fan of JoJo's Bizarre Adventure. As the last episode of Golde ...
- allegro设置内存分配器的一个坑
看过<游戏引擎架构>后我开始对内存的分配问题关注,一直想用内存分配器来管理游戏的内存.前两天发现了有许多第三方内存分配器可以用.最后挑中了nedmalloc,这个库也是ogre所使用的,测 ...
- SpringDataRedis入门到实战
1.项目常见问题思考 对于电商系统的广告后台管理和广告前台展示,首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪.那如何解决呢?我们通常的做法有两种:一种是数据缓存.一种是网页静态化.我 ...
- Python zmq的三种简单模式
ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单.简洁和性能更高. 是一个消息处理队列库,可在多个 ...
- Git详解之Git起步
前言 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...