美文网首页
常用命令-awk

常用命令-awk

作者: 喵帕斯0_0 | 来源:发表于2018-08-09 23:58 被阅读4次

awk是Linux处理文本的利器,在linux日常处理中,发挥很重要的作用,学会使用awk可以让你的处理文本工作事半功倍。此处记录下,awk常用的处理文本方法。

基本用法
#action中要输出字符串需用双引号`"`括起来。
1. `awk '{[pattern] action}' {filename}`
2. `awk -F fs '{action}' {filename}`
常用参数
参数 描述
-F fs / --field-separator fs 指定分隔符fs,可以是字符串或正则表达式。默认按TAB和空格进行分割
-v var=value / --asign var=value 用户自定义变量
内建常用变量
变量 描述
$n 当前记录的第n个字段,由fs分隔
$0 当前完整记录,还未分隔字符串
NF 当前记录的字段数量
NR 即行号,从1开始算
运算符
运算符 描述
=/ +=/ -=/ *=/ /=/ %=/ ^=/ **= 赋值运算符
?: C条件表达式
|| 逻辑或
&& 逻辑与
< / <=/ >/ >=/ !=/ == 关系运算符
空格 连接
+/- 加减
*/\/\% 乘/除/求余
+/-/! 一元加/一元减/逻辑非
++/-- 自增/自减
in 数组成员
~/~! 匹配正则表达式/不匹配正则表达式
BEGIN/END块

BEGIN{开始处理前执行的语句}
{每行执行的语句}
END{处理完所有行之后执行的语句}

使用示例
~$ cat test.txt
1 my name is kl
2 I'm a software developer
3 I'm so hungry
4 I don't have money,house,girlfiend

# 使用默认分隔符分隔
~$ awk '{print $1,$4}' test.txt
1 is
2 software
3 hungry
4 have

# 使用指定分隔符分隔
~$ awk -F, '{print $1,$2}' test.txt
1 my name is kl
2 I'm a software developer
3 I'm so hungry
4 I don't have money house

# 使用比较运算符
~$ awk '{if($1>2) print $0}' test.txt
3 I'm so hungry
4 I don't have money,house,girlfiend

# 同上
~$ awk '$1>2 {print $0}' test.txt
3 I'm so hungry
4 I don't have money,house,girlfiend

# 使用逻辑与
~$ awk '$1>2 && $2=="I" {print $0}' test.txt
4 I don't have money,house,girlfiend

# 使用正则,打印第二列包含I的行
~$ awk '$2 ~ /I/ {print $0}' test.txt
2 I'm a software developer
3 I'm so hungry
4 I don't have money,house,girlfiend

# 同上
awk '{if($2 ~ /I/)print $0}' test.txt
2 I'm a software developer
3 I'm so hungry
4 I don't have money,house,girlfiend

# 使用变量
~$ awk '{print NR, $0}' test.txt
1 1 my name is kl
2 2 I'm a software developer
3 3 I'm so hungry
4 4 I don't have money,house,girlfiend

# 使用BEGIN/END,对第一列求和
~$ awk 'BEGIN{sum=0} {sum+=$1} END{print "sum is " sum }' test.txt
sum is 10

# 改变第1列的值
~$ awk '{$1++ ;print $0}' test.txt
2 my name is kl
3 I'm a software developer
4 I'm so hungry
5 I don't have money,house,girlfiend

相关文章

  • Linux常用命令总结

    Linux常用命令指南 @Date 2017.05.23 tail awk awk ' pattern {acti...

  • linux-awk常用命令

    linux-awk常用命令 awk从放弃到入门[https://www.zsythink.net/archives...

  • Linux命令总结

    linux三剑客awk、grep、sed应用环境即常用命令 linux常用命令链接 https://man.lin...

  • 2018-10-14

    Linux常用命令之sed awk(关键字:分析&处理)一行一行的分析处理 awk '条件类型1{动作1}条件类型...

  • PHP高手进阶指南

    Linux常用命令 grep、awk、sed、sort、uniq、ps、df Linux系统性能分析 vmstat...

  • Linux 常用命令总结

    linux 命令速查手册linux 常用操作命令 sed 简明教程 awk 简明教程 常用命令 ls ...

  • Java程序员必备——Linux的面试常见问题及面试题!你知道多

    一. 常用命令 1. 编辑相关 ①. awk NF:字段总数 NR:第几行数据 FS:分隔字符 ②. sed -n...

  • 常用命令-awk

    awk是Linux处理文本的利器,在linux日常处理中,发挥很重要的作用,学会使用awk可以让你的处理文本工作事...

  • awk常用命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大...

  • awk常用命令

    1. 准备文件 准备文件test.log,内容如下。三项分别是:日期,项目,版本号 2. 基本打印 打印第一列 打...

网友评论

      本文标题:常用命令-awk

      本文链接:https://www.haomeiwen.com/subject/kalhbftx.html