Linux 文本相关命令(1)

前言

最近线上环境(Windows Server)出现了一些问题,需要分析一下日志。感觉 Windows 下缺少了一些 Linux 系统中的小工具,像在这波操作中用到的 grep、sort、uniq、awk 这些,本文简单梳理回顾下鄙人在使用这些工具中的一些小技巧和遇到的坑。当然,由于开发的机器都是 Windows,因此使用 Docker Desktop 环境运行 Linux 镜像,并且使用共享文件夹的方式以共享数据。

1. Docker 镜像中的编码问题

在共享文件夹(Windows 中为 d:\docker-share,容器中为 /shared-windows)中新建一个名为 “Overwatch守望先锋” 的文本文件,并在其中写入 “You are powered up,get in there! 你被强化了,快送!”

需要注意的是,在鄙人现在的 Windows 系统(Windows 10 专业版 2004)的记事本中,保存时默认编码为 UTF-8。由于暂时没有其它系统,因此不再考虑其它编码格式的影响。

首先运行官方的 ubuntu 镜像,cd 到 /shared-windows 目录下,查看当前目录下的所有文件:

可以看到由于文件名是中文,无法正确的显示(比较奇怪的是,此时使用 cat 命令可以正确的看到文本中的中文)。

解决方法:

docker exec 时使用 env LANG=C.UTF-8 以 指定编码格式

如:

可以看到文件列表已经可以正常展示了。

注意事项

(1) 网络上还有其它案例讲使用 LANG=C.UTF-8,并执行 source /etc/profile ,鄙人试验后没有成功。

(2) 如果是自己构建镜像,当然可以将上述命令添加到 Dockerfile 中,起到同样的效果。

(3) 显示中文应该只能在 Ubuntu, CentOS 这些操作系统类镜像中配置,在 busybox 这种工具镜像中不能实现(因为根本没有其它语言和编码啊QAQ)

2. grep 命令查看前后几行

在文件夹中新建一个名为 grep_test.txt 的文件,里面用随便打几行数字,并在较中间的一行加入字母A:

root@756adc85c954:/shared-windows# cat grep_test.txt

123123123123

6745686578756

45665436

345645A7678987         # 此行加入字母 A

24523525443546786578

5796789780890

34352353466

8907980

使用grep命令可以找到日志中对应的报错位置,如果想查看报错的前后都发生了什么,可以使用 grep -C + 数字 + 要查找的字符串,如:

root@756adc85c954:/shared-windows# cat grep_test.txt | grep -C 1 A

45665436

345645A7678987

24523525443546786578

查看字母 A 所在行的前后两行。

3. uniq 命令的小坑

在文件夹中新建一个名为 uniq_test.txt 的文件,里面每行依次用 123456 、ABCDEFG、123456、123456、ABCDEFG 填充:

root@756adc85c954:/shared-windows# cat uniq_test.txt

123456

ABCDEFG

123456

123456

ABCDEFG

尝试使用 uniq 命令去除重复行,可以看到 uniq 命令并未正确去重,因为 uniq 是去除的连续的重复:

root@756adc85c954:/shared-windows# cat uniq_test.txt | uniq

123456

ABCDEFG

123456

ABCDEFG

应当先使用 sort 命令排序后再使用 uniq 命令去重,如:

root@756adc85c954:/shared-windows# cat uniq_test.txt | sort | uniq

123456

ABCDEFG

参考

Docker 容器中显示中文 https://blog.csdn.net/gao449812984/article/details/83377132

grep 显示前后几行 https://www.cnblogs.com/noxy/p/11127678.html

uniq 的一些使用技巧 https://www.cnblogs.com/lovychen/p/5639753.html

Linux 文本相关命令(1)的更多相关文章

  1. Linux文本相关命令

    Linux文本相关命令 目录 Linux文本相关命令 文本排序命令 文本去重命令 基础命令cut 文本三剑客 sed awk grep 文本排序命令 sort 常用参数: -n:以数值大小进行排序 - ...

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

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

  3. Linux性能相关命令

    Linux性能相关命令 目录 Linux性能相关命令 1. 查看硬盘相关信息 2. 查看CPU相关信息 3. 查看内存相关信息 4. 查看进程运行的信息 1. 查看硬盘相关信息 cat /proc/s ...

  4. 编程小技巧之 Linux 文本处理命令(二)

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本篇文章是<Linux 文本处理命令> 续篇,在前文的基础上再介 ...

  5. Linux文件管理相关命令

    Linux文件管理相关命令   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux文件管理背景知识之后, 我们可以 ...

  6. linux文本处理命令

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

  7. Linux进程相关命令使用场景

    Linux进程相关命令使用场景 在Linux系统上工作时,我们常常会碰到很多和进程相关的查询场景,今天在这里进行详细的讲解,进程相关的对象包括以下几个: 端口:Port 进程号:PId 执行文件所在路 ...

  8. Linux 网络相关命令 Cheat Sheet

    以下漫画形式呈现的常用 Linux 网络相关命令速查表来自 twitter -

  9. Linux解压缩相关命令

    Linux解压缩相关命令 运行级别: 0:关机 1:单用户 2:多用户无网络连接 3:多用户有网络连接 4:系统保留 5:图形界面 6:系统重启 通过init[0123456]来切换不同的运行级别 g ...

随机推荐

  1. MySQL Utilities工具教程

    一.MySQL Utilities介绍 MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入)复制工具 (安装. ...

  2. 用传纸条讲 HTTPS

    我和小宇早恋了,上课的时候老说话. 老师把我们的座位分得很远,我在第一排,她在最后一排,我们中间隔了很多人. 但我们还是想通过传纸条的方式交流. 我们中间的那些同学,虽然坏心思比较多,但好在可以保证将 ...

  3. Thymeleaf页面静态化技术

    Teymeleaf的使用 案例一:springboot搭建Thymeleaf 1.导入依赖 2.新建html页面模板 3.新建前端控制层Controller 4.新建启动类 1.导入依赖 <?x ...

  4. 零基础学Java之Java学习笔记(一):Java概述

    什么是Java? Java是一门面向对象编程语言,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序. Java特点有哪些? 1.Java语言吸收了C++语言的各种优点,具有功能强大 ...

  5. S3C2440—2.裸机开发步骤及工具使用

    文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...

  6. Redis分布式锁的原理和实现

    前言 我们之前聊过redis的,对基础不了解的可以移步查看一下: 几分钟搞定redis存储session共享--设计实现:https://www.cnblogs.com/xiongze520/p/10 ...

  7. 数字化转型:敏捷和DevOps如何降低风险,提高速度

    进行数字化转型就意味着团队需要应对经常发生冲突的挑战--例如,要应对在复杂的相互依赖环境中快速变化的需求.对软件开发人员来说,这是一个熟悉的困境. 如果使用传统的瀑布方法来应对这些挑战,就会发现,在线 ...

  8. Nikitosh 和异或

    题面 设 \(l_{i}\) 为以 \(i\) 为结尾的区间中最大的一段异或值,\(r_{i}\) 为以 \(i\) 为开头的区间中最大的一段异或值. 则有 \[l_{i}=\max\left(l[i ...

  9. echatrts 各参数快速了解(+实例)

    实例:https://www.jianshu.com/p/8cac22daca98 参数详解:https://echarts.baidu.com/option.html#title.textStyle ...

  10. wpf 中 theme 的使用 和 listview 模板的使用.

    theme 文件 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentatio ...