sed、awk用法

sed

1. 基本语法:

sed [选项] '编辑命令' 文件 
  • 选项:用于指定 sed 的一些选项,例如 -n 表示静默模式,不显示模式空间内容。
  • '编辑命令':包含 sed 命令的单引号括起来的字符串。
  • 文件:要处理的文本文件的路径。

2. 基本操作:

  • 替换操作:

    sed 's/old/new/' file 
  • 删除操作:

    sed '/pattern/d' file 
  • 插入操作:

    sed '/pattern/i\new_line' file 
  • 追加操作:

    sed '/pattern/a\new_line' file 

3. 特殊模式:

  • 行范围选择:

    sed '2,5s/old/new/' file # 第2到第5行替换 
  • 正则表达式模式:

    sed '/^pattern/s/old/new/' file # 匹配以 pattern 开头的行,替换其中的 old 为 new 
  • 行号定位:

    sed '5s/old/new/' file # 第5行替换 

4. 全局替换和重复替换:

  • 全局替换:

    sed 's/old/new/g' file 
  • 数字表示替换次数:

    sed 's/old/new/2' file # 替换每行的第2个匹配项 

5. 保存修改到文件:

sed -i 's/old/new/' file 

使用 -i 选项,sed 将直接修改原始文件。

6. 引用与转义:

  • 引用字符:

    sed 's/[/\\[/g' file # 将 [ 替换为 \[ 
  • 转义字符:

    sed 's/\(pattern\)/\1/' file # 在替换中引用匹配到的内容 

7. 多个编辑命令:

sed -e 'command1' -e 'command2' file 

8. 示例:

  • 删除空行:

    sed '/^$/d' file 
  • 将逗号分隔的文件的第二列提取出来:

    sed 's/[^,]*,\([^,]*\).*/\1/' file 
  • 将文本中所有大写字母转换为小写:

    sed 's/[A-Z]/\L&/g' file

awk

1. 基本语法:

awk 'pattern { action }' file 
  • pattern 是一个正则表达式模式,用于匹配输入行。
  • { action } 是一个块,包含在匹配模式的情况下执行的动作。

2. 内置变量:

  • $0 表示整个当前行。
  • $1, $2, ... 表示当前行的第一个、第二个字段,依此类推。
  • NF 表示当前行的字段数量。
  • NR 表示当前行的行号。
  • FS 表示字段分隔符,默认是空格。

3. 基本操作:

  • 打印行:

    awk '{ print }' file 
  • 打印特定字段:

    awk '{ print $1, $2 }' file 
  • 条件过滤:

    awk '/pattern/ { print }' file 
  • 计算:

    awk '{ sum += $1 } END { print sum }' file 

4. 流程控制:

  • if-else 语句:

    awk '{ if ($1 > 10) print "Greater"; else print "Less or equal" }' file 
  • 循环语句:

    awk '{ for (i=1; i<=NF; i++) print $i }' file 

5. 自定义函数:

awk 'function myfunc(x) { return x * 2 } { print myfunc($1) }' file 

6. 特殊模块:

  • BEGINEND 模块:
    awk 'BEGIN { print "Start processing" } { print $1 } END { print "End processing" }' file 

7. 常见应用:

  • 提取特定列:

    awk '{ print $2 }' file 
  • 计算列的平均值:

    awk '{ sum += $1 } END { print sum / NR }' file 
  • 查找和替换:

    awk '{ gsub(/old/, "new"); print }' file

你可能感兴趣的:(linux,服务器)