shell编程——awk

用法
awk 'BEGIN{ commands } pattern{ commands } END{ commands }' INPUTFILE...
awk 的输出
( 1 ) print item1 , item2 , ......
各项目之间使用逗号隔开,而输出时则以空白字符分隔;
输出的 item 可以为字符串或数值、当前记录的字段 ( 如 1) 、变量或 awk 的表达式;数值会先转换为 字符串,然后再输出; print 命令后面的 item 可以省略,此时其功能相当于 print 0, 因此,如果想输出空白行,则需要使
用 print " " ;
root@localhost \~ # awk 'BEGIN { print "line one\nline two\nline
three"}'
line one
line two
line three
root@localhost \~ # awk 'BEGIN{print "This","is","test"}'
This is test
root@localhost \~ # awk -F: '{print 1,3}' /etc/passwd | head -n 3
root 0
bin 1
daemon 2
root@localhost \~ # awk -F: '{printf "%-15s %i\n",1,3}' /etc/passwd |head
-n 3
root 0
bin 1
daemon 2

输出重定向
print items > output - file
print items >> output - file
print items | command
root@localhost ~] # awk -F: '{printf "%-15s %i\n",1,3 > "test1" }'
/etc/passwd


root@localhost \~ # echo "this is" > test.txt
root@localhost \~ # awk 'BEGIN {OFS="#"} {print 1,2,"a","test"}' test.txt
this #is#a#test
root@localhost \~ # awk 'BEGIN{print ENVIRON"PATH"}'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
用户自定义变量
awk 允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只
能使用字母、数字和下划线,且不能以数字开头。 awk 变量名称区分字符大小写。
使用赋值语句进行赋值:
root@localhost \~# awk 'BEGIN{test="hello";print test}'
hello
在命令行中使用 -v 选项赋值:
root@localhost \~# awk -v test="hello" 'BEGIN {print test}'
hello

awk命令调用脚本

root@server \~# awk -f test.awk awk2.txt

```

```bash

OFS设置输出结果的间隔符为\t

root@server \~# awk -F ":" 'BEGIN {OFS="\t"} {print 1,2}' /etc/passwd

```

```bash

#查看文件中所有空白行的行号

root@server \~# awk '/^$/{print NR}' /root/anaconda-ks.cfg

```

用户自定义变量:

awk允许用户自定义自己的变量以便在程序代码中使用

变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头

awk变量名称区分字符大小写

[root@server ~l# awk 'BEGIN{test="hello world" ; print test}'#变量定义在BEGIN中

hello world

root@server \~# awk -v test="hello world" BEGIN'{ print test}'# 变量定义在-V参数后,

hello world

相关推荐
女神下凡14 分钟前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范
wuminyu6 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
海宇AI7 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH7 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
花开盛夏^.^8 小时前
电脑打开多个浏览器Web窗口占用较大的运行内存的原因
前端·浏览器
2601_963282778 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
馒头不想说话9 小时前
实体店老板的24小时AI运营员工,写、剪、发全自动,省下一整个团队工资
前端
叼烟扛炮9 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
是真的小外套9 小时前
网络安全实战第14期:Week2周末闯关
网络·安全·web安全
xbzb9 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron