Sort

将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

-u     在输出行中去除重复行

-r      改为降序(默认升序)

-o     将排序结果输出到原文件中(sort –r file.txt –o file.txt)

-n     以数值来排序(默认是以字符来排序,比如10比2小)

-t和-k      其中-t后面跟设定的间隔符,若为空格则用单引号将空格括起来,-k来指定列数(以哪一列来排序)

-f      将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c     检查文件是否排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C     检查文件是否排好序,如果乱序,不输出内容,仅返回1

-M    以月份来排序

-b     忽略每一行前面的所有空白部分,从第一个可见字符开始比较

-I      表示忽略不可打印字符,只针对可打印字符(\a,\b,\n,\r都是不可打印字符)

-k:

可以写多个    -k 数字,在前面的优先级高,前面相同的就按后面的排序

-k 3r          表示第三个域按降序排序

-k 3nr       表示第三个域按降序以数值排序

如果将-n写在最前面,那么后面的域里面不用写n,都是按照以数值排序

-k 1.2        表示对第一个域的第二个字符开始到这个域的最后一个字符为止的字符串进行排序

-k 1.2,1.2          表示只针对第一个域的第二个字符排序

-k 3,3        表示只对本域排序,若没有后面那个3,则变成对第3个域开始到最后一个域位置的内容进行排

-k 1.1,1.1 –u    从第一个域的第一个字符开始,遇到相同的删掉本身后面一个字符靠后的

-k 2 –k 1 –k 3 –u      只要有一个有不同就不会轻易删除,-u会权衡所有-k选项,除非全部相同

Sort认为0小于00小于000小于0000…

-k 2.2,3.1          sort只会比较第二个域的第二个字符到第二个域的最后一个字符的部分,不会把第三个域的开头字符纳入比较范围

Cut

三种定位:-b         字节

-c          字符

-f           域

-b

Who|cut –b 3          提取第3个字节

Who|cut –b 3-5,8   提取第3个,第4个,第5个,第8个字节

其中cut –b 3-5,8与cut –b 8,3-5不同,所有定位会从小到大排序

-b -3表示从第一个字节到第三个字节,而-b 3-表示从第三个字节到行尾,且都包括了第3个字节

-b -3,3-表示输出整行,不会出现连续两个重叠的第3个字节

-c

以字符为单位,可以输出中文

-n用于告诉cut不要将多字节字符拆开    -nb 1,2,3便可以输出一个汉字

-f

cut –d : -f 1      以:为间隔符,提取第1个域

-f 3-5        提取第3个,第4个,第5个域

-f 4-          提取第4个域到最后一个域

Cut的-d选项的默认间隔符就是制表符,省略-d选项代表使用制表符,直接用-f来取域

-d ‘ ‘          以空格为间隔符,两个引号之间有空格

paste

将不同文件的数据放在一行

格式:

Paste  <-d><-s>  file1  file2

-d     制定不同于空格或tab键的域分隔符。比如使用@分隔符,就可以-d@。d” ”

-s      将每个文件合并成行,而不是按行合并(每个文件中的内容占一行)

-       使用标准输入

cat a.txt

a

b

c

cat 1.txt

1

2

3

paste a.txt 1.txt

a1

b2

c3

paste –d @ a.txt 1.txt

a@1

b@2

c@3

paste –s a.txt 1.txt

abc

123

#ls

1.txt 2.txt

#ls | paste(默认是一个-,从标准输入读取一个作为一行)

1.txt

2.txt

#ls | paste –

1.txt

2.txt

#ls | paste - -(两个-之间用空格分开,有多少个-,就取多少个作为一行)

1.txt2.txt

Tr

格式:

tr –c –d –s [“string1_to_translate_from”][“string2_to_translate_to”] < input-file

-c     用字符串1中字符集的补集替换此字符集,要求字符集为ASCII

-d     删除字符串1中所有输入字符

-s      删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串

input-file  是转换文件名

指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表

[a-z]a-z内的字符组成的字符串

[A-Z]A-Z内的字符组成的字符串

[0-9]数字串

\octal       一个三位的八进制数,对应有效的ASCII字符

[O*n]       表示字符O重复出现指定次数n。因此是匹配OO的字符串

\a Ctrl-G 铃声\007

\b Ctrl-H  退格符\010

\f Ctrl-L    走行换页\014

\n Ctrl-J   新行\012

\r Ctrl-M  回车\015

\t Ctrl-I    tab键\011

\v Ctrl-X\ 030

应用例子

tr –s “[a-z]” <oops.txt > result.txt

去除oops.txt里面的重复的小写字符

tr –s “[\012]” < plan.txt 或 tr –s [“\n”] < plan.txt

删除空行

tr –s “[\015]” “[\n]” < file 或 tr –s “[\r]” “[\n]” < file

删除文件中的^M,并代之以换行

cat a.txt |tr “[a-z]” “[A-Z]” > b.txt

大写到小写

tr –cs “[a-z][A-Z]” “[\012*]” <diary.txt

将文件每行所有不包含在[a-z]或[A-Z]的字符串放在字符串1中并转换为一新行。-s表示压缩所有新行,-c表示保留所有字母不动

转换控制字符

#cat –v stat.txt                  显示stat.txt的控制字符

box aa^^^^^12^M

apple bbas^^^^23^M

^Z

猜想‘^^^^^’是tab键,每一行以Ctrl-M结尾,文件结尾Ctrl-Z

使用-s选项,查看ASCII表。^的八进制代码是136,^M是015,tab键是011,^Z是032

用tab键替换^^^^^,命令为”\136” “[\011*]”。将结果重定向到临时工作文件stat.tmp

tr –s “[\136]” “[\011*]” <stat.txt >stat.tmp

用新行替换每行末尾的^M,并用\n去除^Z,输入要来自于临时工作文件stat.tmp

tr –s “[\015][\032]” “\n” <stat.tmp

要删除所有的tab键,代之以空格,使用命令

tr –s “[\011]” “[\040*]” <input.file

tr –s “[:]” “[\011]” </etc/passwd或tr –s “[:]” “[\t]” </etc/passwd

替换passwd文件中所有冒号,代之以tab键,可以增加可读性

echo $PATH | tr “:” “\n”

将冒号改为回车

可以在vi里面使用所有的命令,记住:在tr命令前要加上希望处理的行范围和感叹号(!),如1,$!tr –d ‘\t’(美元符号表示最后一行)

Tee

功能说明:读取标准输入的数据,并将其内容输出成文件

语法:tee [-ai] [--help] [--version] [文件…]

补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。可利用tee把管道导入的数据存成文件,甚至一次保存数份文件

参数:

-a     附加到既有文件的后面,而非覆盖它

-i      忽略中断信号

--help       在线帮助

--version  显示版本信息

范例:

#cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3

列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1 ss-copy2 ss-copy3

tee file     //覆盖

tee –a file         //追加

tee -        //输出到标准输出两次

tee - -       //输出到标准输出三次

tee file1 file2 -        //输出到标准输出两次,并写到那两个文件中

#tee testfile

生成一个文件,包含你敲入的内容

#tee –i testfile

结果同testfile,不过不会接收中断信号,只能用Ctrl+d结束,不能用Ctrl+c

#ls | tee test

执行ls列出目录文件同时将输出保存到文件test中

#ls “adfxaffewfasdf” 2>&1 | tee ls.txt

把标准错误输出也保存到文件

Uniq

可以去除排序过的文件中的重复行,因此uniq经常和sort何用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的,若有重复行却没在相邻,那么uniq不会删除的

选项:

-c     可在每个输出行之前加上该行重复的次数

-d     仅显示重复的行

-u     显示没有重复的行

-i      忽略大小写字符的不同

#cat testfile

hello

world

friend

hello

world

hello

#sort testfile | uniq –c

1 friend

3 hello

2 world

#sort testfile | uniq –dc

3 hello

2 world

#sort testfile | uniq –u

friend

Linux之文本处理命令的更多相关文章

  1. Linux 的文本处理命令一览

    grep 基于关键字搜索文本内容 -i 搜索时忽略大小写-n 显示结果所在行数-v 输出不带关键字的行-Ax 在输出的时候包含结果所在行之后的指定行数(x为一个数值,表示输出后面x行)-Bx 在输出的 ...

  2. Linux 高级文本处理命令

    1.2.1 cut命令 cut命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields     ## 用于有特定分隔字符 [ ...

  3. Linux高级文本处理命令

    cut 一.cut命令 功能:cut命令可以从一个文本文件/文本流中提取文本列 语法: cut -d '分割字符' -f fields ##用于有特定分割字符 cut -c 字符区间 ##用于排列整齐 ...

  4. linux——高级文本处理命令之wc、cut、sort

    1.  wc :Word Count 命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出 1.1 命令格式: wc [选项]文件... 1.2 命令参数: -c 统计字节数. -l  ...

  5. Linux常用文本处理命令

    1.grep命令 echo 'zero\nzo\nzoo' | grep 'z.*o':将匹配以'z'开头以'o'结尾的所有字符串 echo 'zero\nzo\nzoo' | grep 'z.o': ...

  6. linux常用文本编缉命令(strings/sed/awk/cut)

    一.strings strings--读出文件中的所有字符串 二.sed--文本编缉 类型 命令 命令说明 字符串替换 sed -i 's/str_reg/str_rep/' filename 将文件 ...

  7. 编程小技巧之 Linux 文本处理命令

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...

  8. awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一

    awk.grep.sed是linux操作文本的三大利器,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单纯的查找或匹配文 ...

  9. linux文本处理命令

    linux文本处理命令 1.wc命令 基本介绍 文件的行统计.字符统计.字节统计 基本语法 wc  [OPTION]...  [FILE]... wc  [OPTION]...  --files0-f ...

随机推荐

  1. POJ2559 Largest Rectangle in a Histogram —— 单调栈

    题目链接:http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Lim ...

  2. 2016 Al-Baath University Training Camp Contest-1 I. March Rain —— 二分

    题目链接:http://codeforces.com/problemset/gymProblem/101028/I I. March Rain time limit per test 2 second ...

  3. 封装class类为jar包提供给其他项目使用

    一.完成class类的编写与测试工作 二.完善javadoc注释,生成自己的API 注释要按照标准要求进行 Project -- generate  javadoc

  4. 编译生成的h.gch文件是什么鬼?

    所谓预编译头,就是把头文件事先编译成一种二进制的中间格式,供后续的编译过程使用.GCC编译头文件后的中间文件是*.gch. 如何将头文件编译为.gch文件呢?用g++编译,格式: g++ xxx.h ...

  5. jquery easyui 实战总结

    (2012-09-26 10:22:24) 转载▼ 标签: it 分类: Javascript 一.tree 1.根据node id查找对应的node,然后选择该节点:                 ...

  6. 使用 Git 命令去管理项目的版本控制(二)

    参考 上一篇  完成本篇博客,本篇为作者原创,仅供学习参考. 本篇博文在上一篇的基础上这里记录了我的一个小模拟练习.本篇作为自己的学习笔记,也意在方便其他人的学习使用,达到分享目的.下面主要是操作截图 ...

  7. 查看Spring源码的方法

    来自为知笔记(Wiz)

  8. Flutter实战视频-移动电商-40.路由_Fluro的全局注入和使用方法

    40.路由_Fluro的全局注入和使用方法 路由注册到顶层,使每个页面都可以使用,注册到顶层就需要在main.dart中 main.dart注册路由 注入 onGenerateRoute是Materi ...

  9. dom4j的解析实例

    book.xml数据如下: <books> <book> <author>Thomas</author> <title>Java从入门到放弃 ...

  10. POJ - 3414 Pots BFS(著名倒水问题升级版)

    Pots You are given two pots, having the volume of A and B liters respectively. The following operati ...