Linux三剑客

Linux三剑客

================================================================================
Linux三剑客是指awk、sed和grep,它们是在Linux和Unix系统中常用的文本处理工具。

- awk是一种强大的文本处理工具,可以根据指定的规则对文本进行分析和处理。它可以按列或字段进行操作,并支持自定义脚本编程。

- sed是一种流编辑器,用于对文本进行转换和替换操作。它通过逐行读取文本并应用指定的编辑命令来修改文本内容。

- grep是一种用于搜索文本的工具,它可以根据指定的模式匹配在文件中查找特定的字符串,并将匹配到的行输出。

这些工具通常与管道符号(|)结合使用,以实现复杂的文本处理任务。它们在命令行环境下非常有用,并且在自动化脚本和数据处理中广泛应用。

================================================================================
awk命令是一种强大的文本处理工具,用于对结构化文本数据进行分析和处理。它按行读取输入文件,并根据指定的规则执行相应的操作。

基本语法格式如下:
```
awk 'pattern { action }' file
```

其中,`pattern`是用于匹配行的模式,可以是正则表达式或其他条件;`action`是在匹配到的行上执行的操作,可以是打印、计算、变量赋值等。

以下是一些常用的awk命令示例:

1. 打印整个文件内容:
   ```
   awk '{ print }' file
   ```

2. 按列打印:
   ```
   awk '{ print $1, $3 }' file
   ```

3. 根据条件过滤行:
   ```
   awk '/pattern/ { print }' file
   ```

4. 计算行数:
   ```
   awk 'END { print NR }' file
   ```

5. 使用内置变量:
   ```
   awk '{ sum += $1 } END { print sum }' file
   ```

6. 使用条件语句:
   ```
   awk '{ if ($1 > 10) print $0 }' file
   ```

7. 自定义分隔符:
   ```
   awk -F',' '{ print $1, $3 }' file
   ```

8. 字符串拼接:
   ```
   awk '{ result = $1 "-" $2; print result }' file
   ```

9. 数组操作:
   ```
   awk '{ count[$1]++ } END { for (item in count) print item, count[item] }' file
   ```

10. 格式化输出:
   ```
   awk '{ printf "%-10s %5d\n", $1, $2 }' file
   ```

11. 执行系统命令:
   ```
   awk '{ cmd = "ls " $1; system(cmd) }' file
   ```

12. 多文件处理:
   ```
   awk '{ print FILENAME, $0 }' file1 file2
   ```

13. 使用正则表达式替换:
   ```
   awk '{ gsub("pattern", "replacement", $0); print }' file
   ```

14. 自定义函数:
   ```
   awk 'function myFunction(arg) { ... } { myFunction($1) }' file
   ```

15. 处理文件的不同部分:
   ```
   awk '/start_pattern/, /end_pattern/ { print }' file
   ```

16. 控制输出分隔符:
   ```
   awk -v OFS="," '{ print $1, $2 }' file
   ```

17. 处理日期和时间:
   ```
   awk '{ timestamp = mktime("2021 09 01 12 30 00"); print strftime("%Y-%m-%d %H:%M:%S", timestamp) }' file
   ```

19. 处理多行记录:
   ```
   awk 'BEGIN { RS = ""; FS = "\n" } { print $1, $2 }' file
   ```

19. 使用模式匹配和变量赋值:
   ```
   awk '/pattern/ { var = $1; print var }' file
   ```

这些示例展示了awk命令的一些高级用法,可以帮助你更灵活地处理文本数据。请记住,awk具有强大的编程能力,你可以根据具体需求编写复杂的脚本来处理和分析数据。阅读awk的文档和参考资料,以及实践使用它,将有助于你更好地掌握和应用awk命令。

当然,还有更多的awk命令和技巧可供使用。以下是一些进阶的awk命令示例:

1. 使用内置函数:
   - length:计算字段长度。
   - substr:提取子字符串。
   - tolower、toupper:将字符串转换为小写或大写。
   - split:将字符串拆分为数组。
   - sprintf:格式化输出。

2. 处理文件:
   - FNR:当前记录在当前文件中的行号。
   - NR:当前记录的总行号。
   - FILENAME:当前输入文件的名称。

3. 多字段排序:
   ```
   awk '{ print $1, $2 }' file | sort -k1,1 -k2,2n
   ```

4. 使用模式匹配和条件语句:
   ```
   awk '/pattern/ { if ($1 > 10) print $0 }' file
   ```

5. 数值计算:
   ```
   awk '{ sum += $1 } END { print sum }' file
   ```

6. 输出行号:
   ```
   awk '{ print NR, $0 }' file
   ```

7. 自定义输出分隔符和结束符:
   ```
   awk 'BEGIN { OFS = ","; ORS = "\n\n" } { print $1, $2 }' file
   ```

这些示例展示了awk命令的更多用法和技巧,可以帮助你进行更复杂的文本处理和数据分析任务。请根据具体需求和场景,灵活运用awk命令的各种功能和特性。阅读awk的文档和参考资料,以及进行实践和尝试,将有助于你深入了解和掌握awk命令的强大能力。

================================================================================
sed(Stream Editor)是一种流式文本编辑器,用于对文本进行转换和替换操作。它通过读取输入流的内容,并根据指定的规则进行处理和修改,然后将结果输出到标准输出。

以下是一些常见的sed命令示例:

1. 替换文本:
   ```
   sed 's/pattern/replacement/' file
   ```

2. 全局替换文本:
   ```
   sed 's/pattern/replacement/g' file
   ```

3. 只替换匹配行中的第一个匹配项:
   ```
   sed '0,/pattern/s/pattern/replacement/' file
   ```

4. 删除空白行:
   ```
   sed '/^$/d' file
   ```

5. 删除行首或行尾的空格:
   ```
   sed 's/^ *//; s/ *$//' file
   ```

6. 插入新行:
   ```
   sed '2i\New Line' file
   ```

7. 删除指定行:
   ```
   sed '2d' file
   ```

8. 执行多个编辑操作:
   ```
   sed -e 's/pattern1/replacement1/' -e 's/pattern2/replacement2/' file
   ```

这些示例展示了sed命令的一些常见用法,可以帮助你进行文本处理和转换操作。sed具有强大的正则表达式支持和灵活的编辑功能,你可以根据具体需求编写复杂的sed脚本来实现更复杂的文本处理任务。阅读sed的文档和参考资料,以及进行实践和尝试,将有助于你更好地掌握和应用sed命令。

当然,还有更多的sed命令和技巧可供使用。以下是一些进阶的sed命令示例:

1. 使用正则表达式:
   - 匹配行:`sed '/pattern/p' file`
   - 反向匹配行:`sed '/pattern/!p' file`
   - 匹配行范围:`sed '/start/,/end/p' file`

2. 替换指定行或范围内的文本:
   ```
   sed '2s/pattern/replacement/' file
   sed '2,4s/pattern/replacement/' file
   ```

3. 保存替换结果到原文件(原地编辑):
   ```
   sed -i 's/pattern/replacement/' file
   ```

4. 根据正则表达式进行删除操作:
   ```
   sed '/pattern/d' file
   ```

5. 根据条件进行处理:
   ```
   sed '/pattern/{command}' file
   ```

6. 多行处理:
   ```
   sed ':a;N;$!ba;s/\n/ /g' file
   ```

7. 引用变量:
   ```
   var="replacement"
   sed "s/pattern/$var/" file
   ```

8. 执行外部命令并将结果插入到文本中:
   ```
   sed 's/pattern/$(command)/' file
   ```

这些示例展示了sed命令的更多用法和技巧,可以帮助你进行更复杂的文本处理和转换任务。请根据具体需求和场景,灵活运用sed命令的各种功能和特性。阅读sed的文档和参考资料,以及进行实践和尝试,将有助于你深入了解和掌握sed命令的强大能力。

================================================================================

grep命令是一个强大的文本搜索工具,用于在文件或输入流中查找匹配指定模式的行,并将其输出到标准输出。

以下是一些常见的grep命令示例:

1. 在文件中搜索匹配的行:
   ```
   grep 'pattern' file
   ```

2. 搜索多个文件:
   ```
   grep 'pattern' file1 file2
   ```

3. 忽略大小写进行搜索:
   ```
   grep -i 'pattern' file
   ```

4. 显示匹配行的行号:
   ```
   grep -n 'pattern' file
   ```

5. 反向匹配,显示不包含指定模式的行:
   ```
   grep -v 'pattern' file
   ```

6. 使用正则表达式进行搜索:
   ```
   grep -E 'regex_pattern' file
   ```

7. 递归搜索目录下的文件:
   ```
   grep -r 'pattern' directory
   ```

8. 统计匹配的行数:
   ```
   grep -c 'pattern' file
   ```

9. 仅显示匹配的部分:
   ```
   grep -o 'pattern' file
   ```

10. 根据上下文显示匹配行及周围行:
    ```
    grep -C 2 'pattern' file
    ```

这些示例展示了grep命令的一些常见用法,可以帮助你进行文本搜索和过滤操作。grep支持强大的正则表达式和多种选项,你可以根据具体需求进行灵活的搜索和匹配。阅读grep的文档和参考资料,以及进行实践和尝试,将有助于你更好地掌握和应用grep命令。

当然,还有更多的grep命令选项和用法。以下是一些进阶的grep命令示例:

1. 递归搜索指定文件类型:
   ```
   grep 'pattern' -r --include="*.txt" directory
   ```

2. 排除特定文件类型:
   ```
   grep 'pattern' -r --exclude="*.log" directory
   ```

3. 根据匹配行的上下文显示:
   ```
   grep -A 2 -B 2 'pattern' file
   ```

4. 只显示匹配的文件名:
   ```
   grep -l 'pattern' file1 file2
   ```

5. 显示匹配行之前的内容:
   ```
   grep -B 2 'pattern' file
   ```

6. 显示匹配行之后的内容:
   ```
   grep -A 2 'pattern' file
   ```

7. 指定搜索的起始位置:
   ```
   grep 'pattern' -e 'pattern2' file
   ```

8. 从文件中读取模式:
   ```
   grep -f patterns.txt file
   ```

9. 使用颜色高亮显示匹配结果:
   ```
   grep --color=auto 'pattern' file
   ```

10. 将匹配的行作为变量传递给其他命令:
    ```
    grep 'pattern' file | xargs command
    ```

这些示例展示了grep命令的一些高级用法和选项,可以帮助你进行更复杂的文本搜索和处理任务。请根据具体需求和场景,灵活运用grep命令的各种功能和特性。阅读grep的文档和参考资料,以及进行实践和尝试,将有助于你深入了解和掌握grep命令的强大能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openssl + 3DES开发实例(linux)

文章目录 一、3DES介绍3DES 的特点:3DES 加密的步骤:3DES 的应用场景: 二、3DES原理1. DES 原理回顾:2. 3DES 原理:3. 3DES 的加密流程: 三、openssl 3DES开发实例 一、3DES介绍 3DES(Triple …

【自然语言处理】【大模型】赋予大模型使用工具的能力:Toolformer与ART

赋予大模型使用工具的能力:Toolformer与ART ​ 本文介绍两种赋予大模型使用外部工具能力的方法:Toolformer和ART。 Toolformer论文地址:https://arxiv.org/pdf/2302.04761.pdf ART论文地址:https://arxiv.org/pdf/2303.09014.pd…

学习网络编程No.10【深入学习HTTPS】

引言: 北京时间:2023/11/14/18:45,因为种种原因,上个月的文章昨天才更新,目前处于刷题前夕,算法课在看了。这次和以前不一样,因为以前对知识框架没有很好的理念,并不清楚相关知识要…

三天吃透Redis面试八股文

目录: Redis是什么?Redis优缺点?Redis为什么这么快?讲讲Redis的线程模型?Redis应用场景有哪些?Memcached和Redis的区别?为什么要用 Redis 而不用 map/guava 做缓存?Redis 数据类型有哪些&…

环境配置|GitHub——解决Github无法显示图片以及README无法显示图片

一、问题背景 最近在整理之前写过的实验、项目,打算把这些东西写成blog,并把工程文件整理上传到Github上。但在上传README文件的时候,发现github无法显示README中的图片,如下图所示: 在README中该图片路径为&#xff1…

Flutter笔记:缩放手势

Flutter笔记 缩放手势 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134485138 目 录 1. 概述2. 缩放手…

FlinkCDC数据实时同步Mysql到ES

考大家一个问题,如果想要把数据库的数据同步到别的地方,比如es,mongodb,大家会采用哪些方案呢? ::: 定时扫描同步? 实时日志同步? 定时同步是一个很好的方案,比较简单,但是如果对实时要求比较高的话,定…

【开源】基于Vue.js的智能教学资源库系统

项目编号: S 050 ,文末获取源码。 \color{red}{项目编号:S050,文末获取源码。} 项目编号:S050,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课…

git常用的命令

以下是一些常用的 Git 命令&#xff1a; 1. git init: 初始化一个新的 Git 仓库。 2. git clone <repo>: 克隆一个远程仓库到本地。 3. git add <file>: 将文件添加到暂存区。 4. git commit -m "<message>": 提交暂存区的文件到本地仓库&…

quinn源码解析:QUIC数据包是如何发送的

quinn源码解析&#xff1a;QUIC数据包是如何发送的 简介QUIC协议中的概念endpoint&#xff08;端点&#xff09;connection&#xff08;连接&#xff09;Stream&#xff08;流&#xff09;Frame (帧) 发包过程解析SendStream::write_allConnectionDriverEndpointDriver 简介 q…

R语言和RStudio的下载安装(非常简便舒适)

目录 R语言和RStudio的关系R语言和Tableau下载R语言进入官网选择清华镜像源Download R for Windows选择base版本开始下载进行安装配置环境变量检查是否安装成功 下载RStudio进入官网点击下载进行安装检查是否安装成功打开选择R语言环境成功打开显示四个工作区 R语言和RStudio的…

【预处理详解】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏函数的对比 7. #和## 7.1 #运算符 7.2 ## 运算符 8. 命名约定 …

英语六级做题经验总结

以下是个人在六级做题过程中总结的经验&#xff0c;如大佬们有更好的意见&#xff0c;欢迎评论区补充~ 注&#xff1a;题序即本人做题顺序&#xff1a; 1.写作&#xff08;占总分的15%&#xff09; 对于写作的时间应该把握在25分钟以内&#xff0c;因为需要留5分钟左右看听力…

【算法】石子合并(区间dp)

题目 设有 N 堆石子排成一排&#xff0c;其编号为 1,2,3,…,N。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆石子的质量之和&#xff0c;合并后与这两堆石子…

你知道什么是SaaS吗?

你知道什么是SaaS吗&#xff1f; 云服务架构的三个概念 PaaS 英文就是 Platform-as-a-Service&#xff08;平台即服务&#xff09;PaaS&#xff0c;某些时候也叫做中间件。就是把客户采用提供的开发语言和工具&#xff08;例如Java&#xff0c;python, .Net等&#xff09;开…

计算两个向量的叉积numpy.cross()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算两个向量的叉积 numpy.cross() [太阳]选择题 请问代码中最后输出正确的是&#xff1f; import numpy as np a np.array([1, 2, 3]) b np.array([4, 5, 6]) c np.cross(a, b) pri…

nrm的安装以及使用

1&#xff0c;什么是nrm nrm 是一个 npm 源管理器&#xff0c;允许你快速地在 npm源间切换。 什么意思呢&#xff0c;npm默认情况下是使用npm官方源&#xff08;使用npm config ls命令可以查看&#xff09;&#xff0c;在国内用这个源肯定是不靠谱的&#xff0c;一般我们都会…

云原生专栏丨基于服务网格的企业级灰度发布技术

灰度发布&#xff08;又名金丝雀发布&#xff09;是指在黑与白之间&#xff0c;能够平滑过渡的一种发布方式。在其上可以进行A/B testing&#xff0c;即让一部分用户继续用产品特性A&#xff0c;一部分用户开始用产品特性B&#xff0c;如果用户对B没有什么反对意见&#xff0c;…

ssm+vue的高校疫情防控管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的高校疫情防控管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

项目自动化构建工具——make/Makefile

目录 一、概念 二、使用实例 三、原理 四、进度条程序 1、缓冲区问题 1、概念 2、\r和\n 2、代码编写 一、概念 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先…