行合并 ffffff 等价 说明 abcd 技术 c99 sort ima
如:
A=44echo "ABCD" | awk -v GET_A=$A '{print GET_A}'
说明:-v 选项用于定义参数,这里表示将变量 A 的值赋予 GET_A.
有多少个变量需要赋值,就需要多少个 - v 选项.与之等价的:应用于脚本中:
#! /bin/bash
sort -n filename |awk -F ':' '{print $1}'|uniq >id.txt
for id in cat id.txt; do
echo "[$id]"
awk -v id2=$id -F ':' '$1==id2 {print $2}' filename // 另外的方式为: awk -F ':' '$1=="'id'"{print $2}' filename
done
awk 合并一个文件
awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt
解释:NR 表示读取的行数,FNR 表示读取的当前行数
所以其实 NR==FNR 就表示读取 2.txt 的时候. 同理 NR>FNR 表示读取 1.txt 的时候
数组 a 其实就相当于一个 map
把一个文件多行连接成一行
awk 'gsub(/nologin/,"abc")' /etc/passwd // passwd 文件中把所 nologin 替换为 abc
awk -F ':' 'gsub(/root/,"abc",$1) {print $0}' /etc/passwd // 替换 $1 中的 root 为 abc
grep 或 egrep 或 awk 过滤两个或多个关键词
egrep '123|abc' filename // 用 egrep 同样可以实现
awk '/123|abc/' filename // awk 的实现方式
把两个文件中相同的行合并成一行
awk 用法练习
来源: http://www.bubuko.com/infodetail-2471507.html