主文件
#! /bin/bash
#awk 文本读取和匹配
#https://blog.csdn.net/wdz306ling/article/details/80383824
# 语法格式:awk [选项] '指令' 操作文件
# -F 指定分隔符,分隔符用 "" 引起来
# -v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快
# -f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序
#读文件
awk '{print}' 7-test.txt ##逐行读取文件7-test.txt内容并打印
echo -e "********************************>\n"
awk '{print $0}' 7-test.txt #逐行读取文件内容,并打印该行,$0保存的是当前行的内容(全部)
awk '{print $1}' 7-test.txt #$1是打印每段地一个单词,即第n列内容
echo -e "********************************>\n"
awk -F ":" '{print $1}' 7-test.txt #仅仅显示到 : 前第一列的内容
num=`wc 7-test.txt` # 统计 .txt文件有多少 行 列 单位字数
num1=`wc 7-test.txt | awk '{print $1}'` #有多少列
echo -e ${num} "********************************>\n"
awk '/Though/{print}' 7-test.txt #打印 .txt中匹配Though的那一行内容
awk -F ":" '$1 ~ /15/{print $2}' 7-test.txt #匹配第一列匹配 15 的行其第二列的内容 ~ 表示匹配
# awk提供了多个比较操作符:"==" ">" "<" "<=" ">=" "!=" "~"匹配 "!~"不匹配
awk 'BEGIN{ FS=":"} $1 == "15" {print $3}' 7-test.txt #以":"为分隔符,打印.txt中第一列是15 的行其第3列的内容
# awk中的条件语句
awk 'BEGIN {FS=":"} {if ($1 ~ "root") {print $2}}' /etc/passwd # 以":"为分隔符,打印/etc/passwd文件中第一列匹配root的行,其第二列的内容
#在awk中NF变量记录的是当前行中有多少列(默认是空格为分割符)
awk '{if (NF >= 5) {print $0}}' 7-test.txt
7-test.txt 文件
22:16:135:26
15.12:16:993
I am a good boy.
you are a good choose.
I love you.