linux

xiaoxiao2021-02-28  72

综述

每个程序都是一个或多个模式动作序列。每个模式一次匹配文本的每一行。直到输入完毕。 都是用 shell 后有{}号,awk一般不使用{}号。

语法

使用 模式-动作 语句 ex:

awk ' $3 > 0 {print $1 $2 $3} {FS= " "} ' awk1.txt awk 指明使用的是awk程序awk1.txt 对awk1.txt文本进行操作‘xxxx’ 模式动作模块$3 > 0模式。利用该模式扫一遍所有的行。{print xxx} 动作。对符合条件的进行动作。{FS} 指定内建变量

主要分成四部分:

awk命令操作的文本:可以有多个模式:可以没有动作:放在{}里 模式-动作部分被’ ‘单引号包围,可以方便的放在shell中使用。 在awk中可以指定分隔符(默认是空格) // 指定singla为默认分隔符 awk -F singal {xx}

模式

用来选择符合要求的行。也可以没有模式,只有动作。 通过列来选择行。 nn1 0表示所有的行

// 选择第三列值>3的所有行 $3>0 // 选择所有内容 $0 // == 选择指定内容的 $1 = "Mark" // 使用与或非等逻辑运算 $1 == "Mark" || $1 == "Mary" !($3>0)

动作

print

在print中可以进行数据运算,添加打印内容,添加空格等操作

// 打印所有内容 print $0 // 打印第n列 print $n // 打印字段的个数(number of field) print NF > print NF $1 > 3xxxx // 打印最后一个字段 print $(NF-1) // 打印行号(number of row) print NR $0 > print NR $1 > 1 xx // 输出排序后的内容 print $2 | sort -n

ifelse

运算符:

> < == >= != || &&

内建变量

$0 所有内容 $N 第N列 FS 输入字段(列)分隔符。指定输入字段的分隔符 NF 当前字段的个数(列数) NR 添加行号 FNR 每个文件各自的行号 RS 输入的记录(行)分隔符 OFS 输出字段分隔符 ORS输出记录分隔符

拆分文件

awk 'NR!=1 {print $n> "输出文件名"}' file
转载请注明原文地址: https://www.6miu.com/read-80539.html

最新回复(0)