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

一:wc命令

	介绍:
		可以计算文件的Byte数、字数、或是列数,若不指定文件名称、
		或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。	

语法:

	wc [OPTION]... [FILE]...        

参数:

     -l:lines  只显示行数

     -w:words  只显示字数

  	 -c或--bytes或--chars 只显示Bytes数

例子:

1.在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。
#wc filename

2.查看多个文件的信息
#wc filename1 filename2 filename3

3.使用参数以后,用哪个就显示那个
#wc -l    显示行数
#wc -w  显示字数
#wc -c   显示bytes数

二:cut命令

	介绍:
		文本截取工具

语法:

    cut  [-bn] [file]
	cut [-c] [file]
	cut [-df] [file]

参数:

	   -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
       -d CHAR: 以指定的字符为分隔符;

       -f FIELDS:挑选出的字段;

       #: 指定的单个字段;

       #-#: 连续的多个字段;

       #,#: 离散的多个字段;

使用说明:

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。	
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

例子:

当你执行who命令时,会输出类似如下的内容:
$ who
root     tty1         2019-07-21 19:10
root     pts/0       2019-07-21 19:11 (10.2.19.9)


1.如果我们想提取每一行的第3个字节,就这样:
$ who|cut -b 4
t
t

2.如果我们想提取每一行的第2-4个字节,就这样:
$ who|cut -b 3-5
oot
oot

3.如果我们想提取每一行的第2或4或10的字节,就这样:
$ who|cut -b 2,4,10
ott
otp

注意:使用-d参数是应该和-f 配套使用(目前只知道这一种)

查看一下lizi.txt(我自己要查看的文件)里面的内容
[root@bogon ~]# cat lizi.txt
000 001
002 003
004 005
006 007
008 009

4 对test内容进行选取,我们这里选取其第一列。
输入命令:cut  -f1 -d" " lizi.txt
[root@bogon ~]# cut -f1 -d" " lizi.txt
000
002
004
006
008

其中 -f的意思是显示指定字段的内容,1是第一列  -d的意思是
指定字段的分隔符,默认的字段分隔符为“TAB”,我们这里设置为空格


5 对lizi.txt进行打印除了第一列之外的列。
输入命令:cut -f1 -d" " --complement lizi.txt
[root@bogon ~]# cut -f1 -d" " --complement lizi.txt
001
003
005
007
009

其中--complement的意思是补足被选择的字节、字符或字段

三:sort命令

	介绍:
		文本排序工具

语法:

     sort [OPTION]... [FILE]...

参数:

        -n:基于数值发小排序而非字符排序;

        -t CHAR: 指定分隔符;

        -k #: 用于排序比对的字段;

        -r: 逆序排序;

        -f: 忽略字符大小写;

        -u: 重复行只保留一份;

          重复行:连续且相同;

例子:

1.对/etc/passwd 的账号进行排序
[root@bogon ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
fedora:x:4005:4005::/users/fedora:/bin/bash

2.内容是以 : 来分隔的,我想以第三栏来排序,该如何
root:x:0:0:root:/root:/bin/bash
zhangsan:x:1000:1000:zhangsan:/home/zhangsan:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

四:uniq命令

	介绍:
		报告或移除重复的行因此uniq经常和sort合用。也就是说,
		为了使uniq起作用,所有的重复行必须是相邻的。

语法:

    uniq [OPTION]... [INPUT [OUTPUT]]

参数:

        -c: 统计每行出现的重复次数;

        -u: 只显示没有重复过的行;

        -d: 只显示重复过的行;

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

例子

先查看f1.txt
#cat f1.txt
[root@bogon ~]# cat f1.txt
hello
world
like
country
color
hello
color
like

直接删除未经排序的,发现没有任何被删除
[root@bogon ~]# uniq f1.txt
hello
world
like
country
color
hello
color
like

排序(倒序)文件,默认是去重
[root@bogon ~]# cat f1.txt |sort |uniq
color
country
hello
like
world

排序之后删除了重复行,同时在行首位置输出该行重复的次数
[root@bogon ~]# sort f1.txt | uniq -c
2 color
1 country
2 hello
2 like
1 world

仅显示存在重复的行,并在行首显示该行重复的次数
[root@bogon ~]# sort f1.txt | uniq -dc
2 color
2 hello
2 like

仅显示不重复的行
[root@bogon ~]# sort f1.txt | uniq -u
country
world

五:diff命令

	介绍:
		逐行比较文件内容中的不同之处

语法:

   diff <变动前文件> <变动后文件> 
   diff有三种格式:

参数:

  a 添加(addition) 
  c 改变(change) 
  d 删除(deletion)			
  -u: 使用unfied机制,极限是要修改的行的上下文,默认为3行;

例子

[root@bogon ~]# diff f1.txt f2.txt
1,8d0
< hello
< world
< like
< country
< color
< hello
< color
< like
第一行的意思是没有一行一样的
后面是给的不一样的答案

六:patch

	介绍:
		向文件打补丁,同diff一起使用

语法:

    patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>]
    		  [-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>]
    		  [-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>]
    		  [--backup-if-mismatch][--binary][--help][--nobackup-if-mismatch][--verbose]
    		  [原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]

例子

[root@bogon ~]# yum install patch -y   <==安装补丁工具
[root@bogon ~]# vim lala
[root@bogon ~]# cat lala
hello haha
butterfly
[root@bogon ~]# vim lala1
[root@bogon ~]# cat lala1
hello haha
I like lala
[root@bogon ~]# diff -u lala lala1 > lala.path
[root@bogon ~]# ls
lala  lala1  lala.path
[root@bogon ~]# patch -b lala lala.path 
##给文件 lala 打补丁, -b —— 备份源文件
patching file lala
[root@localhost mnt]# ls
lala  lala1  lala.orig  lala.path
[root@bogon ~]# cat lala.path 
--- lala    2018-06-12 03:39:26.522689949 -0400
+++ lala1   2018-06-12 03:39:56.100689949 -0400
@@ -1,2 +1,2 @@
 hello haha
-butterfly
+I like lala
[root@bogon ~]# cat lala
hello haha
I like lala
[root@bogon ~]# cat lala1
hello haha
I like lala
[root@bogon ~]# cat lala.orig 
hello haha
butterfly
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值