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

我相信大家在使用Linux过程中总会遇到想要提取某些自己需要的信息的情况,比如如下这四种情况:

1、找出ifconfig命令结果中eno16777728的IPv4地址

2、查出分区空间使用率的最大百分比值

3、查出/tmp的权限,以数字方式显示

这个时候,我们使用命令当然也可以查看,不过还需要自己通过眼睛去过滤不需要的信息,多费劲。如何让自己更轻松的看到自己想看到自己想看的信息呢?今天的文本处理命令能满足我们的简单需求。

wc 此wc非彼WC,在这里wc是word count的简写

wc - print newline, word, and byte counts for each file

其表达格式:wc [OPTION]... [FILE]...

常用选项:

-l:lines 只显示行数

-w:words  只显示单词总数

-c:bytes  只显示该内容字节总数

下面以实例来具体显示wc的功用

创建/test目录 创建/test/wc.txt文件[root@localhost test]# cat > 1

hello me

hello my boy

使用cat在wc.txt内输入一些字符[root@localhost test]# wc wc.txt

2  5 22 wc.txt   第一个2代表行数 第二个5代表单词数 第三个22代表该内容字节总数

[root@localhost test]# wc -l wc.txt

2 wc.txt

[root@localhost test]# wc -c wc.txt

22 wc.txt

[root@localhost test]# wc -w wc.txt

5 wc.txt

cut

cut - remove sections from each line of files

表达格式:cut OPTION... [FILE]...

常用选项:

-d : 以指定的字符为分隔符

-f #(单个字段)|#-#(连续多个字段)|#,...,#(离散多个字段)

-c 按字符切割

--output-delimiter=STRING指定输出分隔符

以/etc/passwd文件为对象做实验

1、取用户名及用户UID并指定输出的分隔符为#[root@localhost test]# tail -5 /etc/passwd

laowang:x:4322:4322::/home/laowang:/bin/bash

u1:x:4323:4323:UUU:/home/u1:/bin/csh

u2:x:4324:4324::/home/u2:/bin/bash

u3:x:4325:4325::/home/u3:/bin/bash

u4:x:4326:4326::/home/u4:/sbin/nologin

通过上面内容,我们可以确定我们需要的内容在第一节跟第三节,同事分隔符为“:”[root@localhost test]# cut -d: -f 1,3 /etc/passwd --output-delimiter=#

root#0

bin#1

daemon#2

adm#3

..

2、查看/etc/passwd文件最后一行,且从第5个字符开始截取到第十个字符.[root@localhost test]# tail -1 /etc/passwd | cut -c 5-10

:4326:

sort排序

sort - sort lines of text files

表达格式: sort [OPTION]... [FILE]...

常用选项:

-t CHAR:指定分隔符

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

-n:基于数值大小排序

-r:逆序排列

-f:忽略字符大小写

-u:重复内容只保留一行

还是以/etc/passwd为对象测试

显示UID最大的用户及其默认shellroot@localhost test]# sort -t: -k 3 -n /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

...

basher:x:4329:4329::/home/basher:/bin/bash

nologin:x:4330:4330::/home/nologin:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

显示成功,但是结果并不直观,我们在利用上面的cut命令对结果进行进一步加工[root@localhost test]# sort -t: -k 3 -n /etc/passwd | tail -1 | cut -d: -f 1,7

nfsnobody:/sbin/nologin

uniq报告或移除重复的行

uniq - report or omit repeated lines

表达格式:uniq [OPTION]... [INPUT [OUTPUT]]

常用选项:

-c:显示每行的重复次数

-u:仅显示未曾重复过的行

-d:仅显示重复过的行

为了演示uniq命令方便,我们创建一个有重复行的文件/test/uniq.txt[root@localhost test]# cat uniq.txt

qqqq

qqqq

qqqq

dfsdf

aa

bb

bb

cc

q

[root@localhost test]# uniq uniq.txt

qqqq

dfsdf

aa

bb

cc

q

uniq 加文件默认将重复的内容隐藏。[root@localhost test]# uniq -c uniq.txt

3 qqqq

1 dfsdf

1 aa

2 bb

1 cc

1 q

1 q

[root@localhost test]# uniq -u uniq.txt

dfsdf

aa

cc

q

[root@localhost test]# uniq -d uniq.txt

qqqq

bb

diff逐行比较文件的异同

diff - compare files line by line

diff [OPTION]... FILES

常用选项:

-u:使用unified机制,即显示要修改的行的上下文,默认3行[root@localhost test]# cat diff1 diff2

abcd

abcde

abcd

bcd

abcde

bc

[root@localhost test]# diff diff1 diff2

1c1

---

> bcd

3c3

---

> bc

[root@localhost test]# diff -u diff1 diff2

--- diff1       2016-08-05 19:46:36.985538120 +0800

+++ diff2       2016-08-05 19:46:54.951836769 +0800

@@ -1,3 +1,3 @@

-abcd

+bcd

abcde

-abcd

+bc

patch向文件打补丁

基本概念 patch - apply changes to files

表达格式patch [-blNR][ -c| -e| -n][-d dir][-D define][-i patchfile]

[-o outfile][-p num][-r rejectfile][file]

patch [OPTION] -l /PATH/PATH_FILE /PATH/OLDFILE

patch /PATH/OLDFILE < /PATH/PATH_FILE

常用的简单文本处理命令介绍完毕,下面来利用本文介绍的命令来解决开头提出的四个问题

1、找出ifconfig命令结果中eno16777728的IPv4地址ifconfig | tr -cs '[:digit:].' ':'| cut -d: -f 5

10.1.253.79

以上共分3步

1)先将ifconfig的内容当做tr的基本输入内容;2)将第一步的内容中所有非数字的内容替换为":"并压缩;3)看所需的IP在第几段然后使用cut命令进行切割

2、查出分区空间使用率的最大百分比值

查看分区空间命令为df[root@localhost test]# df | tr -s ' ' ':'| cut -d: -f 5| tr -d '%'|sort -n|tail -1

29

要实现上述内容需要

1)使用df列出分区空间使用率的内容,

2)之后使用tr将空格替换为:并进行压缩,

3)再之后使用cut进行切割将使用率的列取出,

4)再使用tr将%剔除,

5)之后使用sort按数值大小进行排序

6)最后再使用tail取最后一行的最大值。

3、查出/tmp的权限,以数字方式显示

查看/tmp权限可以使用stat,它可以自动显示处其权限对应的数值,剩下的只需要我们将数字从内容中取出即可。root@localhost test]# stat /tmp/ | tr -cs '[:digit:]' ':'| cut -d: -f 9

1777

1)先显示权限内容

2)将内容中所有非数字替换为“:”并压缩

3)数出对应的权限数字在第几段后进行切割

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值