Linux awk命令

Linux awk命令

今天,在看面经过程中,看到有关于linux指令的问题,想到自己一直对awk不太熟悉,今天详细学习一下,记录一下增强记忆,也希望在今后的工作中能够使用它。

Linux三剑客:grep(过滤文本) sed(修改文本) awk(处理文本)

语法格式

awk [参数] [处理内容] [操作对象]

使用实例
参数取值:
	-F :指定文本分隔符 默认空格
案例
awk -F'f' '{print $NF}' 1.txt


默认变量 $0 代表当前行
		$n 代表第n列
		NF: 表示当前行有多少个字段
		$NF: 表示当前行的最后一个字段
		NR: 表示当前处理的是第几行
案例:
	echo "this is a text" | awk 'print $0'
	res : this is a text
	echo "this is a text" | awk 'print $3'
	res : a
	打印倒数第二个字段:
		awk -F ':' '{print $1, $(NF-1)}' demo.txt
	测试NR:
		awk -F ':' '{print NR ") " $1}' demo.txt
		ps:如果print里面需要打印),需要双引号引起来


函数:
	toupper()将字符转成大写
	tolower()将字符转成小写
	length()返回字符串长度
	substr()返回子字符串
	sin()正弦
	rand()随机数

案例:
	awk -F ':' '{ print toupper($1) }' demo.txt	


条件:
awk '条件 {动作}' 文件名
awk允许指定输出条件,只输出符合条件的行。
案例:
	awk -F ':' '/usr/ {print $1}' demo.txt
	ps:{print $1}前/usr/是正则表达式,只输出包含usr的行
	awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt   #输出奇数行
	awk -F ':' '$1 == "root" {print $1}' demo.txt #输出第一个字段等于指定值的行

if语句
案例:
	awk -F ':' '{if ($1 > "m") print $1}' demo.txt #输出第一个字段第一个字符大于'm'的行
	awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt  #加上了else
posted @ 2024-01-18 18:15  xyfyy  阅读(35)  评论(0)    收藏  举报