awk命令

Linux awk 命令 | 菜鸟教程

https://www.cnblogs.com/losbyday/p/5854707.html

玩转linux——linux awk命令详解【转】_weixin_33675507的博客-CSDN博客

https://www.cnblogs.com/ginvip/p/6352157.html

shell学习笔记2---awk字符串处理(原创)_czmmiao的博客-CSDN博客

shell学习笔记1---awk基础(原创)_weixin_33802505的博客-CSDN博客

(精确匹配==、模糊匹配~)

awk '{if($4~/Brown/) print $0}' grade.txt  --匹配,包含        awk '$0 !~ /Brown/' grade.txt --不匹配

awk '$3=="48" {print$0}' grade.txt   

cat xxx.txt | awk -F, 'substr($0,3,2)=="11" {print $0}'      --打印第3位和第4位等于11的记录

文档一般都是按照某种分隔符写,具有一定的规律性。

$NF  最后一个字段

$NR 行

内置变量

sed -i "s/`cat b.txt |awk '{print $2 }'|awk 'NR==6{print}'`/`cat a.txt |awk '{print $4 }'|awk 'NR==6{print}'`/g" b.txt

cat xxx.txt | awk -F '{s=substr($0,1,1) print s}' 

echo "123" | awk '{print substr($0,1,1)}'

awk -F"|" 'BEGIN{}{}END{}'  xxx.txt

cat file.txt|awk -F"|" '{print $1}'    --以|对文件进行分割,输出第一个字段

BEGIN 和 END 模块

通常,对于每个输入行, awk 都会执行每个脚本代码块一次。然而,在许多编程情况中,可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。对于这种情况, awk 允许您定义一个 BEGIN 块。

因为 awk 在开始处理输入文件之前会执行 BEGIN 块,因此它是初始化 FS(字段分隔符)变量、打印页眉或初始化其它在程序中以后会引用的全局变量的极佳位置。
awk 还提供了另一个特殊块,叫作 END 块。 awk 在处理了输入文件中的所有行之后执行这个块。通常, END 块用于执行最终计算或打印应该出现在输出流结尾的摘要信息。

awk 'BEGIN {count=0;print "[start] user count is ",count} {count=count+1;print $0} 
END{print "[end] user count is ",count}' passwd

[start] user count is  0
root:x:0:0:root:/root:/bin/bash
...................................................................
[end] user count is  27

(count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0)

awk 可以同时处理多个文件。

awk '{pattern + actions}'  files

将匹配到的数值进行增加30

sed "s/\(testlm\)\([0-9]\{1,\}\)/\1`expr \2 + 30`/g" nnn.txt > newfile.txt

文件中的内容为testlm10,testlm11;将替换为testlm40,41

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值