sed,awk与正则表达式

sed擅长取行,awk命令擅长取列

sed

  • 格式sed <option> <script> <file>

  • option

    • -e: 执行多个命令
      • 命令之间必须用分号隔开
      • 命令末尾和分号之间不能有空格
      • 例子:sed -e 's/brown/green; s/dog/cat' data.txt
    • -f: 从文件读取命令
      • 每个命令一行,无需分号
      • 例子:sed -f script.sed data.txt
    • -n:不产生命令输出,用print命令完成输出
  • script

    • **s **: 用第二个斜线间的字符串替换第一个斜线间的字符串
      • 例子:echo "a dog" | sed 's/dog/cat/'
  • file

    • 不指定则默认为STDIN
  • sed不会修改文件数据,而是把修改后的数据发送到STDOUT

awk

  • 格式awk <options> <program> <file>

  • option

    • -f: 从文件读取命令
      • 必须以{}开头结尾
      • 每个命令一行,无需分号
    • -F: 自定义字段分隔符
      • 默认分隔符是空白符
      • 例子:awk -F: '{print $1}' /etc/passwd
  • program

    • 可以自定义变量
      • 引用自定义变量时不需要$
      • 默认变量
        • $0代表整个文本行
        • $1代表第1个数据字段
        • $n代表第n个数据字段
    • 关键字
      • BEGIN:在处理数据前执行后面定义的脚本
        • 两段命令仍需在同一单引号内
        • 例子:awk 'BEGIN {print "hello world!"} {print $0}'
      • END:在处理数据后执行后面定义的脚本
    • 在命令之间加分号可以执行多个命令
      • 例子:echo "Hello World" | awk '{$2="golang"; print $0}'
  • file

    • 不指定则默认为STDIN

    正则表达式

发布了161 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/winter_wu_1998/article/details/104089802