shell脚本之awk工具的使用

在Linux系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被我们运维人员广泛应用于shell脚本,完成各中自动化配置任务。

awk可以直接处理目标文件,也可以和sed命令一样通过“-f”选项读取脚本对目标文件进行处理。

awk的语法格式如下:

sed命令常用于整行处理,而awk比较倾向于将一行分成多个字段,awk可以使用逻辑操作符“&&”,表示“与”,“||”表示“或”,“ !”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^、分别表示加、减、乘、除、取余、和乘方。
awk包含几个特殊的内建变量(可直接用),如下所示:

用法示例:
1)按行输出文本:

2)按字段输出文本:

3)通过管道、双引号调用shell命令:

原文地址:https://blog.51cto.com/14154700/2401129

时间: 2024-10-10 12:21:40

shell脚本之awk工具的使用的相关文章

shell脚本调试之工具——bashdb

bash是Unix/Linux操作系统最常用的shell之一,它非常灵活,和awk.c++配合起来异常强大 以下使用一个测试脚本来说明使用bash调试的方法 test.sh [plain] view plaincopy #!/bin/bash echo "----------------begin-----------------" awk '{sum+=1} END{print sum}' test.sh MAX=3 for ((i = 0; i < MAX; i++)) do

shell脚本之awk基本用法

脚本文件: [email protected]:/study/shell# cat awk_test.sh #!/bin/sh awk_test_fun() { echo "\$0:" echo $0 echo "\$1:" echo $1 echo "\$2:" echo $2 echo "\$3:" echo $3 echo "awk_test.txt content:" cat awk_test.tx

Shell脚本之awk详解

一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的.awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割. 2.功能:流控制.数学运算.进程控制.内置的变量和函数.循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理. (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默

shell脚本,awk实现跳过文件里面的空行。

1.用awk '{if(!NF || /^#/){next}}1' file11 实现对文件里面的空行进行跳过操作,并输出结果. 2. awk '{if(!NF || /^#/){next}}1' file11 实现对文件里面的空行和#开头的行进行跳过操作,并输出结果.

shell脚本,awk实现文件a的每行数据与文件b的相对应的行的值相减,得到其绝对值。

解题思路 文件 shu 是下面这样的.220 34 50 70553 556 32 211 1 14 98 33 文件 jian是下面这样的.1082 想要得到结果是下面这样的.210 24 40 60545 548 24 131 1 12 96 31 用awk来得到想要的结果 [[email protected] study]# awk 'NR==FNR{a[NR]=$1;next}NR!=FNR{for(i=1;i<=NF;i++){$i>a[FNR]?$i=$i-a[FNR]:$i=a[

shell脚本,awk实现行列转换

[[email protected] study]# cat file 张三 语文 81 张三 数学 81 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 怎么实现为下面的排序??? 81 81 76 90 81 100 90 语文 数学 语文 数学 语文 数学 英语 张三 张三 李四 李四 王五 王五 王五 以下是思路分析: 张三 语文 81 张三 数学 81 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90

shell脚本,awk实现每个数字加1.

[[email protected] add]# cat file 1 3 4 5 7 8 9 [[email protected] add]# cat file|awk '{for(i=1;i<=NF;i++){$i+=1}}1' 2 4 5 6 8 9 10 [[email protected] add]# cat file|awk '{for(i=1;i<=NF;i++){$i+=1}}1{print $0}' 2 4 5 6 8 9 10 [[email protected] add]

shell脚本,awk合并一列的问题。

文件 file2内容如下:0 qwert1 asdfghjk2 asdjkl2 zxcvbn3 dfghjkll4 222224 tyuiop4 bnm 让第一列相等的合并成一行,不要第一列,也就是变为如下格式:22222;tyuiop;bnmqwertasdfghjkasdjkl;zxcvbndfghjkll 第一种解法 解题思路: awk '{if(a[$1]){a[$1]=a[$1]";"$2}else{a[$1]=$2}}END{for(i in a)print a[i]}'

shell脚本,awk如何处理文件中上下关联的两行。

文件d.txt如下内容 ggg 1portals: 192.168.5.41:3260werew 2portals: 192.168.5.43:3260 如何把文件d.txt内容变为如下内容 ggg 192.168.5.41:3260werew 192.168.5.43:3260 解题思路: [[email protected] study]# awk '/port/{print a" "$2}{a=$1}' d.txt ggg 192.168.5.41:3260werew 192.1