文本处理小公举(cut,sort,uniq,head,tail,tr,wc,diff)

tr

作用:可搭配集对应字符对字符的转换和删除

集对应字符

[:alnum:]:字母和数字

[:alpha:]:字母

[:cntrl:]:控制(非打印)字符

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

[:xdigit:]:十六进制字符

#语法:
tr [OPTION]... SET1 [SET2]
#选项
-c或——complerment:取字符集的补集
-d或——delete:删除所有属于第一字符集的字符
-s或—squeeze-repeats:把连续重复的字符以单独一个字符表示
-t或--truncate-set1:将第一个字符集对应字符转化为第二字符

#例子

#1.将输出大写字母替换成小写
[[email protected] ~]# echo "LIAOXZ"|tr -t "[[:upper:]]" "[[:lower:]]"
liaoxz
#2.删除文件中的空格
[[email protected] ~]# cat /etc/issue
\S
Kernel \r on an \m

[[email protected] ~]# cat /etc/issue|tr -d " "
\S
Kernel\ronan\m
#3.将/root/下文件列表,显示成一行,并文件名之间用空格隔开
[[email protected] ~]# ls /root/ |tr "[[:space:]]" " " 
1 1.sh 1.txt 2.sh anaconda-ks.cfg bin dead.letter Desktop Documents Downloads install.log 
install.log.syslog liaoxz ll LL mbr Music Pictures ping.sh Public Templates Videos 
#4.处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
[[email protected] ~]# echo "xt.,l 1 jr#" "mn2 c*/fe3 uz4"|tr -d "[[:alpha:]]"|tr -d "[[:punct:]]"
 1  2 3 4
#5.删除文件1中的所有重复字母
[[email protected] ~]# cat 1
wwwwwsss
wwdsss
aaaasddqqaxs

[[email protected] ~]# cat 1|tr -s w
wsss
wdsss
aaaasddqqaxs

[[email protected] ~]# cat 1|tr -s ws
ws
wds
aaaasddqqaxs

[[email protected] ~]# cat 1|tr -s wsa
ws
wds
asddqqaxs

[[email protected] ~]# cat 1|tr -s wsad
ws
wds
asdqqaxs

[[email protected] ~]# cat 1|tr -s wsadq
ws
wds
asdqaxs
#6.处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字
[[email protected] ~]# echo "xt.,l 1 jr#$tttmn2 c*/fe3 uz4"|tr -d -c "[[:digit:]]\n"
134

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

[head|tail]

文件截取小工具

head  显示文本前几行 在默认情况下,head命令显示文件的头10行内容。

#语法
head [OPTION]... [FILE]...
#选项
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数; 
-v:总是显示文件名的头信息; 
-q:不显示文件名的头信息。
#例子
1.显示/etc/passwd文件前5行
[[email protected] ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
2.显示文件/etc/passwd头行第一个字符
[[email protected] ~]# head -c1 /etc/passwd
r

  tail 显示文本后几行 不加选项默认为10行

#语法
tail [OPTION]... [FILE]...
#选项
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。
使用此选项时需要与选项“——follow=name”连用; 
-c或——bytes=:输出文件尾部的N(N为整数)个字节内容; 
-f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与
“-fdescriptor”等效; 
-F:与选项“-follow=name”和“--retry"连用时功能相同; 
-n或——line=:输出文件的尾部N(N位数字)行内容。 --pid=<进程号>:与“-f”选项连用,当指定
的进程号的进程终止后,自动退出tail命令; 
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名; 
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数; 
-v或——verbose:当有多个文件参数时,总是输出各个文件名; --help:显示指令的帮助信息; 
--version:显示指令的版本信息。
#例子
1.显示文件/etc/passwd最后3行内容
[[email protected] ~]# tail -3 /etc/passwd
userlist.file:x:1003:1003::/home/userlist.file:/bin/bash
lll:x:1004:1004::/home/lll:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
2.监控文件1的写入情况

#如下图

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

cut

可以对文件按列抽取需要的内容

#语法
cut OPTION... [FILE]...
#选项
-b:仅显示行中指定直接范围的内容; 
-c:仅显示行中指定范围的字符; 
-d:指定字段的分隔符,默认的字段分隔符为“TAB”; 
-f:显示指定字段的内容; 
-n:与“-b”选项连用,不分割多字节字符; 
--complement:补足被选择的字节、字符或字段; 
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; 

#例子
1.显示root用户名和登录shell
[[email protected] ~]# cut -d: -f1,7 /etc/passwd|grep root
root:/bin/bash
#grep用法参考博客:
#2.查看/etc/issue每一列第一个字符

 [[email protected] etc]# cat /etc/issue
\S
Kernel \r on an \m

[[email protected] etc]# cat /etc/issue|cut -c 1
K

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

wc

  收集文本统计信息,可以计算文件的Byte数、字数或是列数等

#语法
wc [OPTION]... [FILE]...
wc [OPTION]... --files0-from=F
选项
-c或--bytes或——chars:只显示Bytes数; 
-l或——lines:只显示列数; 
-w或——words:只显示单词字数;
-m或--chars  :只显示字符总数。
#例子
显示文件/etc/issue列数和单词字数

[[email protected] etc]# cat /etc/issue|wc -w
6
#单词数
[[email protected] etc]# cat /etc/issue|wc -l
3
#列数

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

sort

文件排序工具,只输出不改变文件内容

#语法
sort [OPTION]... [FILE]...
-b:忽略每行前面开始出的空格字符; 
-c:检查文件是否已经按照顺序排序; 
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; 
-f:排序时,将小写字母视为大写字母; 
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; 
-m:将几个排序号的文件进行合并; 
-M:将前面3个字母依照月份的缩写进行排序;
-k X 选项按照使用c字符分隔的X列来整理能够使用多次可以与-t搭配来用;
-n:依照数值的大小排序; 
-o<输出文件>:将排序后的结果存入制定的文件; 
-r:以相反的顺序来排序; 
-t<分隔字符>:指定排序时所用的栏位分隔字符; 
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
#例子
#1.查出用户UID最大值的用户名、UID及shell类型
[[email protected] etc]# cat passwd |sort -s -n -t: -k3 |tail -1|cut -d: -f1,3,7
nfsnobody:65534:/sbin/nologin
#2.查出用户UID最小值的用户名、UID及shell类型
[[email protected] etc]# cat passwd |sort -s -n -t: -k3 |head -1|cut -d: -f1,3,7
root:0:/bin/bash
#3.截取出/tmp/目录下所有文件的权限,删除文件类型和文件权限一样项
[[email protected] etc]# ll  /tmp|cut -d. -f1|sort
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwx------
drwxr-xr-x
drwxr-xr-x
prw-------
-rw-------
-rw-r--r--
total 72

[[email protected] etc]# ll  /tmp|cut -d. -f1|sort -u
drwx------
drwxr-xr-x
prw-------
-rw-------
-rw-r--r--
total 72

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

uniq

报告或忽略文件中的重复行,一般与sort命令结合使用。

#语法
uniq [OPTION]... [INPUT [OUTPUT]]
#选项
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
#ps:连续且完全相同方为重复
#例子
#显示当前每个远程连接主机ip数
[[email protected] ~]# who |tr -s " "|cut -d " " -f5|sed "/^$/d"|sed "/(:0)/d"|uniq -c
      4 (10.1.250.31)
      2 (10.1.252.216)

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

diff

是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作

#语法
diff [OPTION]... FILES
#选项
-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用; 
-a或——text:diff预设只会逐行比较文本文件; 
-b或--ignore-space-change:不检查空格字符的不同; 
-B或--ignore-blank-lines:不检查空白行; 
-c:显示全部内容,并标出不同之处; 
-C<行数>或--context<行数>:与执行“-c-<行数>”指令相同; 
-d或——minimal:使用不同的演算法,以小的单位来做比较; 
-D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集; 
-e或——ed:此参数的输出格式可用于ed的script文件; 
-f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处; 
-H或--speed-large-files:比较大文件时,可加快速度; 
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际
航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异; 
-i或--ignore-case:不检查大小写的不同; 
-l或——paginate:将结果交由pr程序来分页; 
-n或——rcs:将比较结果以RCS的格式来显示; 
-N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若
使用-N参数,则diff会将文件A 与一个空白的文件比较; 
-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称; 
-P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时,
才会将这个文件与空白的文件做比较; 
-q或--brief:仅显示有无差异,不显示详细的信息; 
-r或——recursive:比较子目录中的文件; 
-s或--report-identical-files:若没有发现任何差异,仍然显示信息; 
-S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较; 
-t或--expand-tabs:在输出时,将tab字符展开; 
-T或--initial-tab:在每行前面加上tab字符以便对齐; 
-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同; 
-v或——version:显示版本信息; 
-w或--ignore-all-space:忽略全部的空格字符; 
-W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽; 
-x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录; 
#例子
#比较httpd.conf文件和httpdbak.conf的 不同
[[email protected] conf]# diff httpd.conf httpdbak.conf 
41c41
< Listen 8080
---
> Listen 80

ps:本文许多命令选项来自于:http://man.linuxde.net/

时间: 2024-10-12 20:31:19

文本处理小公举(cut,sort,uniq,head,tail,tr,wc,diff)的相关文章

linux常用命令-文本处理cut,sort,uniq,wc,tr

cut:截取文本特定字段 NAME       cut - remove sections from each line of files -d, --delimiter=DELIM(指定字段分隔符,默认是空格) use DELIM instead of TAB for field delimiter -f, --fields=LIST(指定要显示的字段) select  only  these  fields;  also print any line that contains no del

Linux基础之文本处理命令(wc,cut,sort,uniq,diff,patch)

我相信大家在使用Linux过程中总会遇到想要提取某些自己需要的信息的情况,比如如下这四种情况: 1.找出ifconfig命令结果中eno16777728的IPv4地址 2.查出分区空间使用率的最大百分比值 3.查出/tmp的权限,以数字方式显示 这个时候,我们使用命令当然也可以查看,不过还需要自己通过眼睛去过滤不需要的信息,多费劲.如何让自己更轻松的看到自己想看到自己想看的信息呢?今天的文本处理命令能满足我们的简单需求. wc 此wc非彼WC,在这里wc是word count的简写 wc - p

0219自学Linux_bash特性+命令学习(cut,sort,uniq,wc,tr,histroy,alias)+通配符glob

09 GPL,BSD,Apache三个开源协定的大体联系及其区别 1.自由软件,版权描述:但是照样是有版权的 2.开源协定,版权描述 www.kernel.org内核版本的版本号查看网址,也是官网 查看最新kernel的最新版本,www.kernel.org习惯了解 列出linux发行版和linux内核的关系 Lniux发行版,GUN:GUN/Linux. 源代码:必须要编译才可以运行,所以发行版是已经将源代码已经编译完成的东西,组合在一起,就形成了发行版,主流的三大发行版:Fedora:它为r

文本处理工具 wc cut sort uniq

<1> wc 统计字符 行 单词 wc -l wc -w wc -c wc可以可以放在文件前面 也可以放在文件后面,如上图. <2> cut 切 顾名思义就是切割文件用的 作用:是切割一任意行文件的列.... 但是默认按照空格来分割的个格列的 当然可以使用 cut -d 来指定分隔符 如 cut -d: cat -d"22",但是其默认参数必须要跟上-f 指定输出第几列,不指定就会报错 常用的也就-d -f 但是还有一个是以前没用用到过的,就是指定输出分隔符 -

文本查看及处理工具:wc, cut, sort, uniq, diff, patch

wc:字符统计,直接使用会依次显示行数.单词数.和字符 wc  [OPTION]...  [FILE]... -l: 行数 -w:单词数 -c: 字符 cut:选取命令,就是将一段数据经过分析,取出我们想要的列,后面必须跟参数使用 cut OPTION... [FILE]... OPTION:     -d CHAR:以指定的字符为分隔符:     -f FIELDS:挑选出的字段:     #:指定的单个字段:     #-#:连续的多个字段:     #,#:离散的多个字段: [[email

cut,sort,uniq,wc

cut cut参数详解 选项 注释 -b 以字节为单位进行分割. -c 以字符为单位进行分割. -d 自定义分隔符,默认为制表符. -f 与-d一起使用,指定显示哪个区域. -n 取消分割多字节字符.仅和 -b 标志一起使用. 注解: cut使用三种定位方式:b(bytes),c(characters),d(fields) cut只擅长处理"以一个字符间隔"的文本内容. sort sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将

linux cat,tac,more,less,head,tail,cut,sort,uniq,wc,tr命令的使用

cat:连接并显示,比如: [[email protected] ~]# cat /tmp/sort.test  111 324 567 324 890 890 567 abc 加上选项-n会显示行号: [[email protected] ~]# cat -n /tmp/sort.test      1111      2324      3567      4324      5890      6890      7567      8abc 加上-E选项会显示行尾符$:(linux中行尾

文本文件命令(wc,cut,sort,uniq)及常用参数

wc 字数统计 wc [OPTION]... [FILE]... -l, --lines 显示行数 -w, --words 显示单词数 -c, --bytes 显示字节数 -L, --max-line-length 打印最长行的长度. eg: cut 文件提取命令 官方解释:remove sections from each line of files 从文件中每一行选取部分 根据官方解释可以知道cut是以每一行为处理对象的 用法:cut OPTION... [FILE]... 常用参数: (其

文件处理工具:wc,cut,sort,uniq

wc命令:统计常用选项:-l :显示行数-w:显示单词数 (以空格分隔为一个单词)-c:显示字符数cut命令:切割常用选项:-d :指明分隔符-f #:指明第几个字段,如,1:1,2:1-3sort命令:排序常用选项:-f:忽略字符大小写-r:逆序-t:字段分隔符-k #:以指定字段为标准排序-n:以数值大小进行排序-u:排序后去重uniq:去重常用选项:-c:显示每行重复出现的次数-d:仅显示重复过的行-u:仅显示不曾重复的行 Note:连续且完全相同方为重复 原文地址:http://blog