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
标签:demo,NF,命令,awk,Linux,print,NR,txt
From: https://www.cnblogs.com/xyfhsy/p/17973144