首页 > 系统相关 >【SHELL】awk 命令用法

【SHELL】awk 命令用法

时间:2024-10-22 11:43:04浏览次数:1  
标签:SHELL -- 用法 awk file print txt data

linux 命令行查询 awk 用法信息

awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:          GNU long options: (standard)
        -f progfile             --file=progfile
        -F fs                   --field-separator=fs
        -v var=val              --assign=var=val
Short options:          GNU long options: (extensions)
        -b                      --characters-as-bytes
        -c                      --traditional
        -C                      --copyright
        -d[file]                --dump-variables[=file]
        -D[file]                --debug[=file]
        -e 'program-text'       --source='program-text'
        -E file                 --exec=file
        -g                      --gen-pot
        -h                      --help
        -i includefile          --include=includefile
        -l library              --load=library
        -L[fatal|invalid|no-ext]        --lint[=fatal|invalid|no-ext]
        -M                      --bignum
        -N                      --use-lc-numeric
        -n                      --non-decimal-data
        -o[file]                --pretty-print[=file]
        -O                      --optimize
        -p[file]                --profile[=file]
        -P                      --posix
        -r                      --re-interval
        -s                      --no-optimize
        -S                      --sandbox
        -t                      --lint-old
        -V                      --version

 

详细解释 awk 命令行选项:

POSIX 或 GNU 样式选项:

  • -f progfile / --file=progfile:
    从文件 progfile 中读取 awk 程序。这种方式适合当脚本太复杂不便于直接写在命令行时。

    示例:

    awk -f myscript.awk data.txt
  • -F fs / --field-separator=fs:
    指定输入文件中的字段分隔符,默认是空白字符。可以使用其他字符作为分隔符,比如逗号、冒号等。

    示例:

    awk -F ',' '{print $1}' data.csv # 用逗号分隔字段,打印第一列
  • -v var=val / --assign=var=val:
    awk 执行前为变量 var 赋值 val,可以用于在脚本中传递外部参数。

    示例:

    awk -v threshold=100 '{ if ($3 > threshold) print $1 }' data.txt # 传入阈值变量 threshold

GNU 扩展选项:

  • -b / --characters-as-bytes:
    按字节处理字符,适合处理非UTF-8的字符编码。

  • -c / --traditional:
    启用传统 awk 模式,禁用某些GNU扩展特性。

  • -C / --copyright:
    打印版权信息。

  • -d[file] / --dump-variables[=file]:
    将所有 awk 程序中的变量和它们的值转储到 file 中,默认输出到标准输出。

  • -D[file] / --debug[=file]:
    启用调试模式,输出调试信息到指定文件或默认输出。

  • -e 'program-text' / --source='program-text':
    在命令行上直接提供 awk 脚本。适用于简单的 awk 处理。

    示例:

    awk -e '{print $1, $2}' data.txt
  • -E file / --exec=file:
    从文件中读取并执行 awk 程序,功能类似 -f

  • -g / --gen-pot:
    生成 .pot 文件,用于国际化。

  • -h / --help:
    显示帮助信息并退出。

  • -i includefile / --include=includefile:
    awk 脚本中包含另一个文件 includefile,这有助于组织较大的 awk 程序。

  • -l library / --load=library:
    加载动态库 library,为 awk 脚本提供额外功能。

  • -L[fatal|invalid|no-ext] / --lint[=fatal|invalid|no-ext]:
    检查程序是否符合标准规范,如果不符合会输出警告或错误。

  • -M / --bignum:
    支持大数计算。

  • -N / --use-lc-numeric:
    使用当前语言环境的数字格式。

  • -n / --non-decimal-data:
    允许处理非十进制数据。

  • -o[file] / --pretty-print[=file]:
    美化输出,并可选择将其输出到文件。

  • -O / --optimize:
    优化 awk 脚本的性能。

  • -p[file] / --profile[=file]:
    启用性能分析,并输出性能报告到指定文件。

  • -P / --posix:
    只启用 POSIX 标准的 awk 特性,禁用所有 GNU 扩展。

  • -r / --re-interval:
    启用正则表达式的区间语法(如 {min,max})。

  • -s / --no-optimize:
    禁用优化。

  • -S / --sandbox:
    启用沙盒模式,限制程序操作系统命令(如 system()getline 等)。

  • -t / --lint-old:
    使用旧式 lint 警告来检查代码。

  • -V / --version:
    显示版本信息并退出。

awk 的常见用法与示例:

  1. 打印文件中的第一列:

    awk '{print $1}' file.txt
  2. 指定分隔符(逗号分隔):

    awk -F ',' '{print $1}' data.csv
  3. 匹配模式并打印符合条件的行:

    打印包含单词 "error" 的行:

    awk '/error/' log.txt
  4. 过滤并计算字段值:

    计算文件中第三列大于100的行数:

    awk '$3 > 100 {count++} END {print count}' data.txt
  5. 使用变量传递外部参数:

    打印大于指定阈值的行,阈值从命令行传入:

    awk -v threshold=50 '$3 > threshold' data.txt
  6. 统计文件中的非空行数:

    awk 'NF' file.txt | wc -l
  7. 范围匹配:

    打印从包含 "start" 到包含 "end" 的所有行:

    awk '/start/,/end/' file.txt
  8. 修改文件内容(就地编辑):

    将文件中所有 "foo" 替换为 "bar" 并保存修改:

    awk '{gsub(/foo/, "bar"); print}' file.txt > temp && mv temp file.txt

总结:

awk 是一个功能强大的文本处理工具,它可以帮助你处理结构化或半结构化的数据。使用 awk,可以轻松地从文本中提取信息,进行数据筛选、统计和分析。

 

 

计算文件两个字符串之间的非空行数(包括这两个字符串所占行数)

awk 'NF' $file| wc -l  使用该命令统计文件 added projects 到 changed projects 之间的非空行数

awk '/added projects/,/changed projects/ { if (NF) count++ } END { print count }' $file

解释:

  1. /added projects/,/changed projects/:
    这是一个范围模式,表示从匹配 added projects 的行开始,到匹配 changed projects 的行结束。

  2. if (NF):
    NFawk 的内置变量,表示当前行的字段数。只要 NF > 0,即当前行不是空行,就会执行后面的操作。这样可以过滤掉空行。

  3. count++:
    如果当前行非空,计数器 count 自增 1。

  4. END { print count }:
    当处理完所有行后,END 块会输出统计的非空行数。

 

标签:SHELL,--,用法,awk,file,print,txt,data
From: https://www.cnblogs.com/skullboyer/p/18492260

相关文章

  • shell实例手册-文件操作
    一、文件常用操作   touchfile             #创建空白文件   rm-rf目录名          #不提示删除非空目录(-r:递归删除-f强制)   dos2unix               #windows文本转linux文本    unix2dos    ......
  • 前端发布shell脚本
    将“切换目录、npm构建、tar打包、scp传输到服务器、服务器端解压、服务器端文件解压替换、服务器端服务重启”流程,整合成一个shell脚本#!/bin/bash####@Description:前端自动发布脚本#@FilePath:publish.sh####获取脚本所在目录SCRIPT_DIR="$(cd"......
  • 【SHELL】sed 命令用法
    linux命令行查询grep用法信息sed--helpUsage:sed[OPTION]...{script-only-if-no-other-script}[input-file]...-n,--quiet,--silentsuppressautomaticprintingofpatternspace--debugannotateprogramexecution......
  • PowerShell的Runspace是一个用于执行PowerShell代码的环境。它提供了一个独立的上下文
    PowerShell的Runspace是一个用于执行PowerShell代码的环境。它提供了一个独立的上下文,允许你在其中运行命令、脚本和表达式。Runspace可以被认为是PowerShell会话的一个实例,可以在多线程环境中使用,允许你并发执行多个PowerShell任务。以下是关于PowerShellRunspace的一些关键点和......
  • Java中super关键词的用法和注意事项
    在Java中,super关键字用于引用当前对象的父类。它主要有以下几种用途:1.访问父类的属性和方法:当子类中定义了与父类同名的属性或方法时,可以使用super关键字来明确指出要访问的是父类中的属性或方法。2.调用父类的构造器:在子类的构造方法中,可以使用super()来显式调用父类的构造器,以......
  • 【SHELL】grep 命令用法
    linux命令行查询grep用法信息grep--helpUsage:grep[OPTION]...PATTERNS[FILE]...SearchforPATTERNSineachFILE.Example:grep-i'helloworld'menu.hmain.cPATTERNScancontainmultiplepatternsseparatedbynewlines.Patternselectionandinte......
  • shell与会话
    当您在命令行中运行一个脚本(如`./gotobin`)时,该脚本会在一个新的子Shell中执行。这意味着脚本中的所有命令(包括`cd`命令)都仅在这个子Shell的上下文中运行。一旦脚本执行完毕,子Shell就会关闭,并且您会返回到原始的交互式Shell会话中,该会话的工作目录保持不变。这是因为`......
  • rolling 用法
    Pandas库中的`rolling`方法是一种强大的数据处理工具,主要用于执行基于滑动窗口的计算,这在时间序列数据或数据框中非常常见。以下是对`rolling`方法及其支持的函数的综合概述:###1.`rolling`方法的基本概念和用法`rolling`方法用于创建一个滚动窗口对象,该对象可以应用于数据框......
  • Shell 主要的作用是什么
    Shell主要的作用:1.提供与操作系统交互的命令行界面;2.执行和管理系统命令和程序;3.脚本编程和自动化任务;4.环境配置和用户管理;5.管理文件和目录;6.进程控制和任务调度。Shell是用户与操作系统进行交互的主要界面,为用户提供了命令行界面。1.提供与操作系统交互的命令行界面......
  • C10-08-宽字节注入-mysql注入之getshell-sqlmap
    一宽字节注入利用宽字节注入实现“库名-表名”的注入过程。靶场环境:容器镜像:area39/pikachu宽字节概念1、如果一个字符的大小是一个字节的,称为窄字节;2、如果一个字符的大小是两个及以上字节的,称为宽字节;像GB2312、GBK、GB18030、BIG5、Shift_JIS等编码都是常见的宽字节......