Shell编程:文本处理器(cut、split、paste、eval 命令)

2024-09-05 15:36

本文主要是介绍Shell编程:文本处理器(cut、split、paste、eval 命令),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

  • 文本处理器 2
    • cut 命令-快速裁剪
      • 语法格式
      • 常用选项
      • 示例
    • split 命令-文件拆分
      • 语法格式
      • 常用选项
      • 示例
    • paste 命令-文件合并
      • 语法格式
      • 常用选项
      • 示例
    • eval 命令-变量扫描器
      • 工作原理
      • 示例


文本处理器 2

本章讲解 grepsortuniqtrcutsplitpaste 命令等。这些文本处理器通常用于数据过滤、转换、清理、格式化和提取等操作,是 Shell 脚本编程和数据处理任务中的核心工具。在 Unix/Linux 系统中,文本处理器可以独立使用,也可以通过管道 | 进行组合,构成强大的文本处理流水线。

cut 命令-快速裁剪

cut 命令用于对字段进行截取和剪裁。

语法格式

cut [选项] 参数

可使用管道传递,如:cat file | cut [选项]

常用选项

  • -d:指定分隔符(默认分隔符为 Tab)。
  • -f:按字段进行截取,指定第n个字段(-f空格n)。
  • -b:以字节为单位进行截取。
  • -c:以字符为单位进行截取。
  • -complement:排除所指定的字段。
  • -output-delimiter:更改输出内容的分隔符。

示例

cut -d ':' -f 1-3 /etc/passwd  
# 指定 ":" 作为分隔符,输出第1到第3个字段
# 参数单双引号都可以head -n 2 /etc/passwd | cut -d ':' --complement -f 2  
# 删除第2个字段head -n 2 /etc/passwd | cut -d ':' -f 1-5 --output-delimiter='@'    
# 将分隔符转换为 @ ,进行输出

split 命令-文件拆分

split 命令用于将大文件拆分为若干小文件。

语法格式

split [选项] 参数 原始文件 拆分后文件名前缀

常用选项

  • -l:指定行数。
  • -b:指定文件的大小。

示例

split -l 20 test2.txt sc             # 按每20行拆分
split -b 2m httpd-2.4.29.tar.bz2 sc  # 按大小拆分

paste 命令-文件合并

paste 命令用于按照字段合并文件内容。

语法格式

paste [选项] 文件1 文件2

常用选项

  • -d:指定文件的分隔符(默认情况下为制表符 “\n”)。
  • -s:将列和行的内容进行互相交换。

示例

paste -d ',' file1 file2   # 按 ',' 分隔符合并文件
paste -s file1             # 将列和行的内容互相交换

注意:pastecat 的区别

  • paste a b 是左右合并,按列合并文件内容。

  • cat a b 是上下合并,按行合并文件内容。

    示例

    **文件a  文件b    paste a b 结果    cat a b结果**1      A       1   A              12      B       2   B              23      C       3   C              3ABC
    

eval 命令-变量扫描器

eval 是一个 Shell 内置命令,用于对命令行进行两次扫描和替换,然后再执行命令。常用于那些一次扫描无法实现功能,需要二次处理的变量。

工作原理

  • 在执行命令之前,Shell 通常会对命令行进行一次扫描,执行变量替换、命令替换等操作。
  • eval 会将命令行再扫描一遍,进行所有的置换,然后执行。这使得 eval 适用于需要进行两次扫描才能实现其功能的变量。

示例

#!/bin/bash# 这是一个验证 eval 扫描的脚本
a=100
b=aecho "普通 echo 输出的变量 b 的值为:" \$$b
eval echo "经过 eval 扫描输出变量 b 的值为:" \$$b

解释

  1. 使用普通的 echo 输出变量 b 的值:

    echo "普通 echo 输出的变量 b 的值为:" \$$b
    
    • \$$b 在第一次扫描时会被替换为 $a
    • 输出结果是:普通 echo 输出的变量 b 的值为: $a
  2. 使用 eval 对变量进行两次扫描:

    eval echo "经过 eval 扫描输出变量 b 的值为:" \$$b
    
    • eval 会先将 \$$b 替换为 $a,然后再执行第二次扫描,将 $a 替换为 100
    • 输出结果是:经过 eval 扫描输出变量 b 的值为: 100

输出结果

普通 echo 输出的变量 b 的值为: $a
经过 eval 扫描输出变量 b 的值为: 100

这篇关于Shell编程:文本处理器(cut、split、paste、eval 命令)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139357

相关文章

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

交换机救命命令手册! 思科交换机排障命令汇总指南

《交换机救命命令手册!思科交换机排障命令汇总指南》在交换机配置与故障排查过程中,总会遇到那些“关键时刻靠得住的命令”,今天我们就来分享一份思科双实战命令手册... 目录1. 基础系统诊断2. 接口与链路诊断3. L2切换排障4. L3路由与转发5. 高级调试与日志6. 性能与QoS7. 安全与DHCP8.

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq