awk命令应用

记录:353

场景:在CentOS 7.9操作系统上,使用awk文本处理工具处理文本;使用awk、cat和grep搭配使用处理文本;使用awk直接处理文本;使用shell脚本调用awk脚本处理文本。

版本:

操作系统:CentOS 7.9

名词:

awk:一个优良的文本处理工具,Linux及Unix环境中功能最强大的数据处理引擎之一。

awk: 一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。

1.命令应用

1.1awk处理第1个文本(默认空格分割)

(1)命令

命令:cat /home/work/aintro.txt | grep -vE "#|^$"| awk '{print $1,$2,$3,$4}'

(2)解析

使用cat命令读取文件内容。

使用grep命令匹配内容,grep -vE "#|^$",是表示匹配不是以#号开头的字符串。-v,是反向匹配;-E是扩展正则表达式;"#|^$",正则表达式是匹配以#号开头的字符串;"#"是以#号开头的字符串,"^"是匹配字符串开头,"$"是匹配字符串结尾。'{print $1,$2,$3,$4}'中的两个单引号是引用代码块。print是输出。

使用awk逐行处理文本,默认使用空格分割字符串。"$1,$2,$3,$4"中$1是代表取分割后第1个字符,$2是取分割后第2个字符,逐级类推。如果是$0就打印出整行内容。

(3)文本内容和文本处理结果

1.2awk处理第2个文本(-F指定分割符号)

(1)命令

命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F":" '{print $1,$2,$3,$4}'

命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F: '{print $1,$2,$3,$4}'

(2)解析

使用cat命令读取文件内容。

使用grep命令匹配内容。

使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

(3)文本内容和文本处理结果

1.3awk处理第3个文本

(1)命令

命令:awk -F":" '{print $1,$2,$3,$4}'  /home/work/cintro.txt

命令:awk -F: '{print $1,$2,$3,$4}'  /home/work/cintro.txt

(2)解析

使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

(3)文本内容和文本处理结果

1.4awk处理第4个文本

(1)命令

命令:awk -F: '{print $1,$2,$3,$4}' /home/work/dintro.txt >>/home/work/dintro-result.txt

(2)解析

使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。处理/home/work/dintro.txt文件内容;结果输出到/home/work/dintro-result.txt文件。

(3)文本内容和文本处理结果

1.5awk处理第5个文本

(1)命令

命令:awk -f /home/work/process.awk /home/work/eintro.txt >>/home/work/eintro-result.txt

(2)解析

使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。

-f /home/work/process.awk,-f指定使用process.awk文件的脚本。

处理/home/work/eintro.txt文件内容;结果输出到/home/work/eintro-result.txt文件。

(3)文本内容和文本处理结果

1.6awk处理第6个文本

(1)命令

执行shell命令:/home/work/process.sh

(2)解析

脚本调用逻辑:

执行shell脚本/home/work/process.sh;

shell脚本调用/home/work/process.awk脚本;

awk -f处理/home/work/fintro.txt文件内容;

>>将处理结果输出到/home/work/fintro-result.txt文件。

(3)文本内容和文本处理结果

图片版:

文字版:

//1. fintro.txt文本
Zhejiang:is:a:province:in:China.
Hangzhou:is:a:city:in:Zj.
Xihu:is:a:district:in:Hz.

//2. process.awk脚本
BEGIN{
FS=":"
}
{print $1,$2,$3,$4}

// 3. process.sh脚本
#!/bin/bash
SRC_FILE=/home/work/fintro.txt
RESULT_FILE=/home/work/fintro-result.txt
AWK_SCRIPT_FILE=/home/work/process.awk
awk -f $AWK_SCRIPT_FILE $SRC_FILE >> $RESULT_FILE

// 4. fintro-result.txt处理结果文本
Zhejiang is a province
Hangzhou is a city
Xihu is a district

2.命令帮助手册

命令:awk --help

解析:查看awk支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:		GNU long options: (standard)
	-f progfile		--file=progfile
	-F fs			--field-separator=fs
	-v var=val		--assign=var=val
Short options:		GNU long options: (extensions)
	-b			--characters-as-bytes
	-c			--traditional
	-C			--copyright
	-d[file]		--dump-variables[=file]
	-e 'program-text'	--source='program-text'
	-E file			--exec=file
	-g			--gen-pot
	-h			--help
	-L [fatal]		--lint[=fatal]
	-n			--non-decimal-data
	-N			--use-lc-numeric
	-O			--optimize
	-p[file]		--profile[=file]
	-P			--posix
	-r			--re-interval
	-S			--sandbox
	-t			--lint-old
	-V			--version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
	gawk '{ sum += $1 }; END { print sum }' file
	gawk -F: '{ print $1 }' /etc/passwd

以上,感谢。

2022年11月29日

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值