awk和sed

awk 是一种强大的文本处理工具,常用于数据提取和报告生成。它以其简洁的语法和强大的功能在Linux和Unix系统中广泛使用。awk 的名字源自其发明者Alfred Aho、Peter Weinberger和Brian Kernighan的名字首字母。
sed(Stream Editor)是一个流编辑器,用于对输入文本进行编辑和处理。它通常用于替换、删除、插入和格式化文本。

AWK

基本特性

  • 模式匹配与处理: awk 可以根据模式(正则表达式)匹配文本行,并在匹配的行上执行指定的操作。
  • 字段处理: 默认以空白字符(空格或制表符)分隔字段。用户可以自定义字段分隔符。
  • 内置变量: 包括行号 NR、字段数 NF、每个字段 $1, $2, …, $n 和整行 $0 等。
  • 格式化输出: 支持使用 printf 函数进行格式化输出。

常见用法

  • 打印指定列:
awk '{ print $1, $3 }' file.txt
  • 根据条件筛选:
awk '$2 > 50' file.txt
  • 计算列的总和:
awk '{ sum += $3 } END { print sum }' file.txt
  • 设置字段分隔符:
awk -F ':' '{ print $1, $3 }' file.txt
  • 格式化输出:
awk '{ printf "%-10s %-10s\n", $1, $2 }' file.txt

SED

基本特性

  • 流编辑: sed 处理文本流,可以对整个文件进行操作,而不会立即修改原始文件,除非使用 -i 选项。
  • 命令集: 使用一系列编辑命令来处理文本,例如 s(替换)、d(删除)、i(插入)、a(追加)等。
  • 正则表达式支持: 支持基本和扩展正则表达式用于模式匹配。

常见用法

  • 替换文本:
sed 's/old/new/' file.txt  # 将第一个匹配的 old 替换为 new。
  • 替换所有匹配的文本:
sed 's/old/new/g' file.txt
  • 删除行:
sed '3d' file.txt # 删除第3行。
sed '/pattern/d' file.txt  # 删除匹配某模式的所有行
  • 插入行:
sed '2i\New line of text' file.txt # 在第2行前插入 'New line of text'。
  • 替换文件内容:
sed -i 's/old/new/g' file.txt # 直接在文件中替换内容(使用 -i 选项)。
  • 打印指定行:
sed -n '2p' file.txt # 仅打印第2行。-n 选项禁止默认的打印行为,p 是打印命令
  • 结合使用
sed 's/old/new/' file.txt | awk '{ print $1, $3 }'

比较和选择

  • awk 是基于字段的处理工具,适用于处理结构化数据(例如表格)并进行复杂的计算和格式化。
  • awk 支持复杂的文本处理、计算和格式化,具有类似编程语言的功能。
  • 使用 awk 时,你需要处理结构化文本,按字段操作,或执行复杂的文本处理任务。
  • sed 是基于行的编辑工具,适用于简单的行级操作和文本替换。
  • sed 更专注于文本的逐行处理和编辑,功能相对简单但高效。
  • 使用 sed 时,你需要执行简单的文本替换、删除或插入操作,尤其是当操作需要应用到整个文本流时。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值