Linux 文本相关命令(1)
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)的更多相关文章
- Linux文本相关命令
Linux文本相关命令 目录 Linux文本相关命令 文本排序命令 文本去重命令 基础命令cut 文本三剑客 sed awk grep 文本排序命令 sort 常用参数: -n:以数值大小进行排序 - ...
- 编程小技巧之 Linux 文本处理命令
合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...
- Linux性能相关命令
Linux性能相关命令 目录 Linux性能相关命令 1. 查看硬盘相关信息 2. 查看CPU相关信息 3. 查看内存相关信息 4. 查看进程运行的信息 1. 查看硬盘相关信息 cat /proc/s ...
- 编程小技巧之 Linux 文本处理命令(二)
合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本篇文章是<Linux 文本处理命令> 续篇,在前文的基础上再介 ...
- Linux文件管理相关命令
Linux文件管理相关命令 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux文件管理背景知识之后, 我们可以 ...
- linux文本处理命令
linux文本处理命令 1.wc命令 基本介绍 文件的行统计.字符统计.字节统计 基本语法 wc [OPTION]... [FILE]... wc [OPTION]... --files0-f ...
- Linux进程相关命令使用场景
Linux进程相关命令使用场景 在Linux系统上工作时,我们常常会碰到很多和进程相关的查询场景,今天在这里进行详细的讲解,进程相关的对象包括以下几个: 端口:Port 进程号:PId 执行文件所在路 ...
- Linux 网络相关命令 Cheat Sheet
以下漫画形式呈现的常用 Linux 网络相关命令速查表来自 twitter -
- Linux解压缩相关命令
Linux解压缩相关命令 运行级别: 0:关机 1:单用户 2:多用户无网络连接 3:多用户有网络连接 4:系统保留 5:图形界面 6:系统重启 通过init[0123456]来切换不同的运行级别 g ...
随机推荐
- 记一次 .NET 某WMS仓储打单系统 内存暴涨分析
一:背景 1. 讲故事 七月中旬有一位朋友加wx求助,他的程序在生产上跑着跑着内存就飙起来了,貌似没有回头的趋势,询问如何解决,截图如下: 和这位朋友聊下来,感觉像是自己在小县城当了个小老板,规律的生 ...
- 尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性
本文首发于<尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性> 概述 .NET开发者们大家好,我是Rector. 几天前(美国时间2 ...
- Share Keyboard, Mouse and Clipboard between Multiple Computers
Synergy version: 1.4.12 Server Download and install synergy-1.4.12-Linux-i686.deb on Mint 14; Run it ...
- RadioButton 自定义样式(带动画)
<Style x:Key="Radbtn" TargetType="{x:Type RadioButton}"> <Setter Proper ...
- 如何用Git上传项目到GitHub
1.登录gitHub,进入主页面,点击"+"号,建立新仓库. 2. 输入自己的仓库名,和简单的描述,根据自己设置为公开的或私有的. 我输入的是仓库名为ESMS. 勾选此选项,rea ...
- IDEA中Maven的使用初探
Maven Maven官网:https://maven.apache.org/ Apache Maven 是一个软件项目管理和理解工具.基于项目对象模型 (POM) 的概念,Maven 可以从一条中央 ...
- NOIP 模拟 $12\; \text{简单的玄学}$
题解 有些难度 对于 \(30pts\) 直接暴力 对于 \(70pts\) 发现规律 \(2^n-a\) 与 \(a\;\;(a\in [1,2^n))\) 分解质因数后,\(2\) 的次数相同 \ ...
- NOIP 模拟 $11\;\rm math$
题解 签到题(然而还是不会) 考虑所有可能的值一定是 \(\in [0,k)\),且一定为 \(gcd(a_1,a_2,...a_n,k)\) 的倍数. 证明: 设 \(tmp=b_1a_1+b_2a ...
- WindowsService开发简单入门
参考网址: https://www.cnblogs.com/wenlong512/p/7355971.html 一.简介 程序创建在 Windows 会话中,可长时间运行的可执行应用程序.这些服务可以 ...
- [C#]c#中数据的同步加锁机制 的几种方法
一,锁定机制最简单的做法就是使用锁定关键字Lock.Lock关键字英文中就是锁的意思,顾名思义就是为操作加上一把锁.它的语法如下: lock(lockObj){//加锁的代码段,一般是操作共同资源的代 ...