AWK学习
基本内容
背景:awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。
# 格式
$ awk 动作 文件名
# 示例
$ awk '{print $0}' demo.txt
# 含义
$0: 表示当前行
$1 $2 $3: 分别表示当前行的第1、2、3个字段
NF: 变量 表示当前行有多少个字段
$NF: 表示最后一个字段
忽略第一行
awk 'NR>1{print $0}'
指定分隔符
# 指定分隔符为: 默认为空格、制表符
awk -F ':'
awk内置变量
# awk 内置变量
NF # 当前行的总共多少个字段
NR # 当前正在处理的时候第几行
FILENAME # 当前文件名
FS # 行分割符,默认是空格和制表符
RS # 行分割符,用于分割每一行,默认是换行符
OFS # 输入字段的分割符,用于打印时分割字段,默认是空格
ORS # 输出记录的分割符,用于打印时分割记录,默认是换行符
OFMT # 数字输出的格式,默认是%.6g
修改内置变量
awk -v FS=',' -v OFS=' ' '{print $1}' 文件名
更多内容,参考:awk的基本用法
例子
词组 加双引号
挂号->口腔健康档案->检查->洗牙->喷砂->抛光->牙周上药->口腔健康指导->其他
# 指定输入换行符为 -> 输出换行符为回车
pbpaste | awk -v RS="->" -v ORS="\n" '{print $0}'
挂号
口腔健康档案
检查
洗牙
喷砂
抛光
牙周上药
口腔健康指导
其他
# 每一行两边加上"",
pbpaste | awk '{print "\""$1"\","}'
"挂号",
"口腔健康档案",
"检查",
"洗牙",
"喷砂",
"抛光",
"牙周上药",
"口腔健康指导",
"其他",
# 完工