Linux教程之文本处理(awk)

Linux教程之文本处理(awk)

适用于 ubuntu 20.04
ubuntu 20.04 是 “西柚云” 主要使用的操作系统 西柚云官网

awk

awk 是个Linux系统自带的处理文本文件的程序,其原理是逐行处理文本内容,适合处理每行格式相同的文本文件。如:csv 格式的文件

ps -ef > xiyou.txt
awk '{print $1}' xiyou.txt

awk [参数] ‘条件 {代码}’ filename 条件可以省略,默认处理所有行。只处理符合条件的行。

参数:

  • F 指定分割符,不指定默认为空格
  • v 定义变量或修改 awk 代码中内置的变量

awk 默认以空格作为分隔符,也可通过 F 参数指定特殊的符号为分隔符。

代码中的特殊变量:

  • $0: 当前处理行的文本内容
  • $1 使用分隔符分割后的第 1 列的内容
  • $2 使用分隔符分割后的第 2 列的内容,以此类推
  • NF 使用分隔符分割后的最后 1 列的序号
  • NF-1 使用分隔符分割后的倒数第 2 列的序号
  • NR 当前的处理行的序号
  • OFS awk 中代码 print 时的分隔符,默认值为 1 个空格
  • FILENAME 文件名
# 打印文件的每一行第 1 列和第 2 列
awk '{print($1, $2)}' xiyou.txt
echo $PATH | awk -F ':' '{print $NF}'

# 只处理匹配正则表达式的行,即只处理以 txb 开头的行
awk '/^txb/ {
	print("txb 用户运行的进程的 pid: ", $2)
}' xiyou.txt

# 处理不匹配正则表达式的行
awk '!/^txb/ {
	print("非txb 用户运行的进程的 pid: ", $2)
}' xiyou.txt

# 所有用户的进程 id
awk '(!/^txb/ || /^txb/) && !/^UID/ {
	print( $1, "用户运行的进程的 pid: ", $2)
}' xiyou.txt

# 在代码中使用 if,在代码中使用双引号,awk 能够处理比较字符串
awk -v OFS='#' '{
if($1 == "root" && $2 > 1) {
	print("root 用户运行的进程的 pid: ", $2)}
}' xiyou.txt

补充内容

关系运算符含义
>大于 m > n
<小于 m < n
>=大于等于 m >=n
<=小于等于 m <=n
==等于 m == n
!=不等于 m != n
~正则匹配符号,text ~ /正则表达式/
!=不匹配正则,text !~ /正则表达式/
逻辑运算符含义
a || ba 条件为真,或 b 条件为真,则整个表达式的值为真
a && ba 条件为真,且 b 条件为真,则整个表达式的值为真
!a若 a 条件为真,则整个表达式的值为假
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值