# 打印每行,并删除第二列
- awk ‘{ $2 = “”; print }’ file1
- awk ‘{ $2 = “”;$1 = “”; print }’ test1
bash-3.2$ # 打印文件的前十行 (模拟 “head”)
bash-3.2$ awk ‘NR < 11′ test1
# 打印文件的最后两行 (模拟 “tail -2″)
awk ‘{y=x “\n” $0; x=$0};END{print y}’
# 打印文件的最后一行 (模拟 “tail -1″)
awk ‘END{print}’
# 打印第5列等于“abc123″的行
awk ‘$5 == “abc123″‘ file1
# 打印指定行之间的内容 (8-12行, 包括第8和第12行)
awk ‘NR==8,NR==12′
# 打印2,3列
✓ awk ‘{print $2, $3}’ file1 > file2
# 打印每行的最后一列
awk ‘{ print $NF }’
# 打印最后一行的最后一列
awk ‘{ field = $NF }; END{ print field }’
# 打印列数超过4的行
awk ‘NF > 4′
# 打印最后一列大于4的行
awk ‘$NF > 4′
选择性的删除某些行:
# 删除所有空白行 (类似于 “grep ‘.’ “)
awk NF
awk ‘/./’
# 删除重复连续的行 (模拟 “uniq”)
awk ‘a !~ $0; {a=$0}’
# 删除重复的、非连续的行
awk ‘! a[$0]++’
awk ‘!($0 in a) {a[$0];print}’
文本间隔:
# 每行后面增加一行空行
awk ‘1;{print “”}’
awk ‘BEGIN{ORS=”\n\n”};1′
# 每行后面增加两行空行
awk ‘1;{print “\n”}’
# 以文件为单位,在每句行前加上编号 (左对齐)
# 使用制表符 (\t) 来代替空格可以有效保护页变的空白。
awk ‘{print FNR “\t” $0}’ files*
其中,0为显示所有列;亦可用1,2来显示1,2列
awk ‘{print FNR “\t” $1,$2}’ test1
# 用制表符 (\t) 给所有文件加上连贯的编号。
awk ‘{print NR “\t” $0}’ files*
# 计算行数 (模拟 “wc -l”)
awk ‘END{print NR}’
# 计算每行之和:
awk ‘{s=0; for (i=1; i<=NF; i++) s=s+$i; print s}’ file1
##其中,{}内同c语句。
# 打印每行每区域的绝对值
awk ‘{for (i=1; i<=NF; i++) if ($i < 0) $i = -$i; print }’
awk ‘{for (i=1; i<=NF; i++) $i = ($i < 0) ? -$i : $i; print }’
# 计算所有行所有区域 行数乘以列数
awk ‘{ total = total + NF }; END {print total}’ file
# 每行用 “bar” 查找替换 “foo”
awk ‘{sub(/foo/,”bar”)}; 1′
gawk ‘{$0=gensub(/foo/,”bar”,4)}; 1′ # 仅仅替换第四个找到的“foo”
awk ‘{gsub(/foo/,”bar”)}; 1′
# 在包含 “baz” 的行里,将 “foo” 替换为 “bar”
awk ‘/baz/{gsub(/foo/, “bar”)}; 1′
# 在不包含 “baz” 的行里,将 “foo” 替换为 “bar”
awk ‘!/baz/{gsub(/foo/, “bar”)}; 1′
# 将 “scarlet” 或者 “ruby” 或者 “puce” 替换为 “red”
awk ‘{gsub(/scarlet|ruby|puce/, “red”)}; 1′
Recent Comments