WangQiFei

蒸 馏 器


思想提纯
  • 首页
  • 归档
  • 标签
  • 关于
  •     

© 2024  by  Wangqifei

sed awk 用法

发布于 2024-10-25 12:10

sed 用法

sed 是个流编辑器,用来对文本逐行处理,主要用来 搜索 、替换、插入、删除操作

基本语法结构

sed [option] 'command' file

选项:

常用参数
-n: 取消自动输出,只有指定的行才会显示。常和 p 配合使用;
-i: 在文件直接操作,慎重使用;
-e: 执行多条 sed 命令;
-r: 支持扩展正则表达式(ERE);
-f: 从脚本文件读取 sed 命令;

用途:

  • 替换
    常规用法: sed 's/查找内容/替换内容/标志' file

标志:
g: 全局替换,默认只对行的第一个查找内容替换,g 定义全局替换;
i: 忽略大小写;
n: 只替换的第 n 个匹配;

指定单行 : sed 'ns/查找内容/替换内容/标志' file
例: 修改第 3 行的所有 ax 为 tf
sed '3s/ax/tf/g' sed.txt

指定多行: sed 'n,ms/查找内容/替换内容/标志' file
例: 修改第 3-10 行的所有 ax 为 tf
1.sed '3,10s/ax/tf/g' sed.txt
2.sed '3,10{s/ax/tf/g}' sed.txt

符合条件的行: sed '/指定条件/s/查找内容/替换内容/标志'file
例: 修改所有包含有name行内的 ax 为 tf
sed '/name/s/ax/tf/g' sed.txt
例: 修改第三个及以后包含有name的行内的ax为tf
sed '/name/{3,$s/sx/tf/g}' sed.txt
替换整行: sed '行号c/替换内容' file
例:将第三行替换为 # replaced line
sed '3c/# replaced line' sed.txt

  • 插入、追加
    某行前插入: sed '行号i\插入内容' sed.txt 例: 在sed.txt第三行前插入# new line sed ‘3i# new line’ sed.txt `

末行后追加: sed '行号a\追加内容' sed.txt
例: 在sed.txt第三行后插入 # new line
sed '3a\# new line' sed.txt

  • 打印
    打印指定行: sed -n '2p' file
    例: 打印首行
    sed -n '1p' sed.txt
    例: 打印第15-17行
    sed '15,17p' sed.txt
    打印匹配行: sed -n '/匹配内容/p' file
    例: 打印含有#的行
    sed '/#/p' sed.txt

  • 多条命令
    sed -e '命令1' -e '命令2' file
    例:删除第2行并将ax替换为tf
    sed -e '2d' -e 's/ax/tf/g' sed.txt

  • 正则匹配
    sed有限支持正则表达,sed只能单行处理,对断言不支持,需要注意转义字符
    例:删除所有以#开头的行
    sed '/^#/d' sed.txt

awk 用法

awk 使用按列分析处理文本。

基本语法结构

awk '条件 { 动作}' file

  • 打印
    打印行
    例:打印所有行 : awk '{print $0}' file
    awk '{print $0}' sed.txt
    打印列
    例: 打印第1列: awk '{print $1}' file

  • 条件过滤
    基于值过滤:

  • 指定分隔符
    默认的awk以空格或者制表符为分隔符,也可通过-F来指定分隔符。

 

下一篇: 直播源的获取终极方案 

© 2024  by  Wangqifei