博客
关于我
Linux awk命令的基本用法
阅读量:604 次
发布时间:2019-03-12

本文共 1164 字,大约阅读时间需要 3 分钟。

AWK命令详解:文件处理与数据提取技巧

文件内容

文件 abc.txt 包含以下内容:

1 this is a file2 apple orange banana pear grape3 a test10 There are orange apple mango

每行按空格或 TAB 分割,共有四列数据。


AWK命令基础

1. 行匹配语句

awk '{[pattern] action}'

awk ''

  • 只能用于空格或 TAB 分割的文件
  • 使用单引号表示语句结束
  • 逐行处理文件

2..column splitting与输出

为了正确处理,首先需要明确字段分割方式。通常,空格或 TAB 五种分隔符默认即可,但有时需要指定。

awk '{print $1,$2}' abc.txt

常用 AWK 格式

1. printf 格式化输出

awk '{print "%-8s %-10s\n",$1,$4}' abc.txt
  • %-8s:输出长度最小为8个字符,未充满前补空格
  • %-10s:同上,长度最小为10个字符
  • \n:换行

2. 可变格式化输出

如需根据具体情况改变输出格式,可以在 print 语句中添加格式标记或脚本变量。


AWK 实用命令示例

1. 修改分隔符

默认分隔符是空格,如果需要指定分隔符,可以直接在命令中指定。

awk -F "," '{print $1,$2}' filenames.txt

2. 替换列内容

-F:内置变量 FS,指定分隔符).


常见 AWK 操作示例

1. 过滤第一列大于 2 的行

awk '$1 > 2' abc.txt

2. 过滤第一列等于 2 的行并输出第二列和第三列

awk '$1 == 2 {print $2,$3}' abc.txt

3. 过滤第一列大于 3 并且第五列等于 'apple' 的行

awk '$1 > 3 && $5 == "apple" {print $2,$3}' abc.txt

特殊字符注意事项

  • 在条件表达式中,逻辑运算符 &&|| 要注意优先级
  • 数字与字符串比较时,需要用于布尔类型转换3.vip
    • 将逻辑运算符放在条件两边

    AWK 函数与变量

    1. 内置变量

    • $PUC:前一列
    • $PR:前两列
    • FS:分隔符
    • OFS:输出字段分隔符

    2. 高级匹配类型

    • <>==!===~!~
    • 可用于包含空格的字段匹配

    最佳实践

    • 最好先通过 head -n 2 查看文件格式
    • 先通过 cat -n 查看换行符和空格
    • 避免在处理大文件时使用 awk,它的性能对比 sed 较弱

    总结语

    AWK 命令是处理文本文件的强大工具,熟练掌握 -F(分隔符)、print 格式化和逻辑条件语句即可解决大多数日常任务。


    欢迎在评论区分享您的学习心得或使用场景!

    转载地址:http://gucxz.baihongyu.com/

    你可能感兴趣的文章
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>
    Mysql8.0的特性
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8修改密码的方法
    查看>>
    Mysql8在Centos上安装后忘记root密码如何重新设置
    查看>>
    Mysql8在Windows上离线安装时忘记root密码
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    MySQL8,体验不一样的安装方式!
    查看>>
    MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
    查看>>
    Mysql: 对换(替换)两条记录的同一个字段值
    查看>>
    mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
    查看>>