AWK和SED参考
AWK 基础
# 结构:awk '模式 { 动作 }' 文件
# 打印指定列
awk '{print $1, $3}' file.txt
# 字段分隔符
awk -F: '{print $1}' /etc/passwd
awk -F',' '{print $2}' data.csv
# 模式匹配
awk '/error/ {print}' logfile
awk '$3 > 100 {print $1, $3}' data.txt
# BEGIN 和 END 块
awk 'BEGIN{sum=0} {sum+=$1} END{print "Total:", sum}' nums.txt
# 内置变量
# NR = line number, NF = number of fields
# FS = field sep, OFS = output field sep
awk 'NR==5' file # 打印第5行
awk 'NF==3' file # 有3个字段的行
AWK 实际示例
# 求第2列之和
awk '{sum+=$2} END{print sum}' data.txt
# 计数
awk '{count[$1]++} END{for(k in count) print k, count[k]}' log.txt
# 打印两个模式之间的行
awk '/START/,/END/' file.txt
# 重新格式化 CSV
awk -F',' 'BEGIN{OFS="\t"} {print $2,$1,$3}' input.csv
SED 基础
# 替换每行第一个匹配
sed 's/old/new/' file.txt
# 全局替换
sed 's/old/new/g' file.txt
# 原地编辑(备份)
sed -i.bak 's/http:/https:/g' config.txt
# 删除匹配行
sed '/^#/d' file.txt # 删除注释行
sed '/^$/d' file.txt # 删除空行
# 打印指定行号
sed -n '5p' file.txt # 打印第5行
sed -n '5,10p' file.txt # 打印5到10行
# 插入/追加
sed '3i\new line' file # 在第3行前插入
sed '3a\new line' file # 在第3行后追加