首页 > 系统相关 >在Linux中,如何使用awk和sed进行文本处理?

在Linux中,如何使用awk和sed进行文本处理?

时间:2024-04-12 12:23:24浏览次数:24  
标签:文本 pattern 文本处理 sed awk Linux txt

在Linux中,awksed都是非常强大的文本处理工具,它们各自有着不同的设计用途和用法。

awk
1. awk简介:

awk 是一种编程语言,主要用于对文本文件逐行处理,支持模式匹配和字段分割等功能,特别适合于生成报表和格式化输出。它的基本工作原理是读取输入文件的每一行,然后按照指定的模式和动作进行处理。

2. awk基本用法:
  • 基础结构awk 'pattern { action }' inputfile(s)

    • pattern:可选,指匹配行的条件,若不指定,则处理所有行。
    • { action }:满足条件时执行的动作,可以包含各种操作和打印命令。
  • 内置变量

    • $0 表示当前行的内容。
    • $1, $2, ... 表示每行按照指定分隔符分割后的字段。
    • FS 是字段分隔符,默认为空格或制表符,可通过 -F 参数自定义。
  • 示例

    • 打印出文本文件中第三列(字段)的内容:

      awk '{print $3}' filename.txt
      
    • 如果想要打印出第一列大于10的所有行:

      awk '$1 > 10 { print }' numbers.txt
      
    • 定义变量和进行数学运算:

      awk '{ x = $1 + $2; print x }' data.txt
      
3. 常用内置变量:
  • $0:当前行内容。
  • $1, $2, ...:当前行的第1列、第2列等。
  • NF:当前行的字段数量。
  • NR:当前处理的记录数(行数)。
4. 更复杂的awk脚本:

awk还支持条件判断、循环、数组、自定义函数等复杂操作,可以编写完整的脚本进行复杂的数据处理和分析。

sed
1. sed简介:

sed (Stream Editor)是一种非交互式的流编辑器,它一次性处理输入流(如文件或管道输入)中的文本,基于正则表达式进行搜索和替换,适用于批量文本处理和简单的文本转换。

2. sed基本用法:
  • 基础结构sed options 'commands' inputfile(s)

    • options:如 -i 表示直接修改原文件, -e 可以执行多条命令。
    • 'commands':一系列针对文本流的操作命令,如s/pattern/replacement/flags(替换命令)。
  • 基本命令示例

    • 替换单词:

      sed 's/old-word/new-word/g' textfile.txt
      
    • 删除匹配行:

      sed '/pattern/d' textfile.txt
      
    • 插入文本:

      sed '/pattern/i\New line content' textfile.txt
      
    • 替换每一行末尾添加内容:

      sed 's/$/ appended text/' textfile.txt
      
3. 常用命令:
  • d:删除行。
  • s:替换文本。
  • p:打印行。
  • a\:在当前行之后追加文本。
  • i\:在当前行之前插入文本。
4. 复杂sed脚本:

sed支持多种命令和地址范围操作,可以根据行号、正则表达式匹配的行执行相应的命令,甚至可以编写多个命令组成的脚本。

结论:
  • awk更适合于基于行和字段进行数据处理、统计和分析的任务,它可以进行复杂的逻辑判断和计算。
  • sed则倾向于进行简单的一次性文本替换和修改,常用于过滤、替换、删除和插入文本行的操作。

综上所述,在实际应用中,两者常常结合使用,共同完成复杂的文本处理任务。

标签:文本,pattern,文本处理,sed,awk,Linux,txt
From: https://www.cnblogs.com/huangjiabobk/p/18130920

相关文章

  • Linux云服务器文件删除恢复方法命令extundelete工具testdisk使用
    如果不小心删除了系统盘的文件,尤其是使用了rm-rf*,请立即停止对磁盘的写入,并且使用数据恢复软件进行恢复(下文有详细的步骤)。立即停止对磁盘的写入实际情况可能没那么容易。服务器可能是云服务器也可能是物理机,下面是可能的情况以及操作方法:1、云服务器:立即去控制台创建快照(防......
  • linux中通过init.d下的服务脚本实现开机启动
    目录一:创建脚本二:通过/etc/rc.local实现开机启动三:通过update-rc.d实现开机启动四:通过chkconfig实现开机启动五:相关说明一:创建脚本服务脚本要包括start,stop,restart这些方法,示例FileBackup.sh#!/bin/bash###BEGININITINFO#Provides:airven#Required-Start......
  • 3568F-Linux-RT系统测试手册
     ......
  • Linux:hostname指令
    学习自:Linux命令-hostname—LZL在线工具1、用途显示和设置系统的主机名称。主机名称保存在环境变量HOSTNAME中。2、用法显示主机名:hostname[-vadfisy]重设主机名:hostname[-vadfisy][主机名]3、参数参数说明-vhostname的具体用法(相当于help模式)-a显示......
  • 3568F-Linux应用开发手册
       ......
  • Linux安装Nacos
    1,先安装jdk,nacos需要依赖于jdk2,官网前往GitHub下载安装包官网:https://nacos.io/zh-cn/官方文档:https://nacos.io/docs/v2/what-is-nacos/GitHub:https://github.com/alibaba/nacoscd/usr/localwgethttps://github.com/alibaba/nacos/releases/download/2.2.3/nacos-serve......
  • Linux,Ubuntu禁用ipv6 启用ipv6
    Linux,Ubuntu禁用ipv6启用ipv6禁用ipv6编辑/etc/sysctl.conf文件,在末尾添加以下三句net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1执行sudosysctl-p​​,会看到下面三句输出执行cat/proc/sys/net......
  • linux端口映射
    linux端口映射添加端口映射iptables-tnat-APREROUTING-ptcp--dport[外部端口]-jREDIRECT--to-ports[内部端口]删除端口映射iptables-tnat-DPREROUTING-ptcp--dport[外部端口]-jREDIRECT--to-ports[内部端口]解释命令和参数iptables-tnat-APRER......
  • linux检测远程服务器端口
    nc命令检测端口是否开放nc-zvIP端口-端口#比如检测192.168.3.34的22到100端口nc-zv192.168.3.3422-100#也可以指检测一个端口,比如192.168.3.34的22端口nc-zv192.168.3.3422nc是netcat工具的命令,是一个很好用的网络工具。比如,可以用来端口扫描,文件传输等......
  • Linux&Ubuntu之更换服务器
    前言更换网卡、主板上的板载网卡、主板是服务器硬件维护的常规操作。通常新换(板载)网卡的MAC地址会变更,而部分服务器更换主板也会导致板载网卡MAC地址变化。由于CAS(Ubuntu)系统会将新MAC地址的网卡视为新设备,在原有网卡配置文件(70-persistent-net.rules)的基础上增加新设备命名记录,......