linux_awk
Posted 未央夜色
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux_awk相关的知识,希望对你有一定的参考价值。
综述
每个程序都是一个或多个模式动作序列。每个模式一次匹配文本的每一行。直到输入完毕。
都是用
符号操作。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
模式
用来选择符合要求的行。也可以没有模式,只有动作。
通过列来选择行。
n:选择第n行。这里是从1开始编号的,
0表示所有的行
// 选择第三列值>3的所有行
$3>0
// 选择所有内容
$0
// == 选择指定内容的
$1 = "Mark"
// 使用与或非等逻辑运算
$1 == "Mark" || $1 == "Mary"
!($3>0)
动作
在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
以上是关于linux_awk的主要内容,如果未能解决你的问题,请参考以下文章