Awk随记:修订间差异

来自三线的随记
无编辑摘要
无编辑摘要
第1行: 第1行:
=== awk内置字符串函数 ===
__FORCETOC__<blockquote>awk、grep、sed是linux操作文本的三大利器,合称文本三剑客</blockquote>
 
===awk内置字符串函数 ===
  gsub(r,s)    在整个$0中用s替代r
  gsub(r,s)    在整个$0中用s替代r


第21行: 第23行:
<br />
<br />


=== awk和Ta的常见变量们 ===
===awk和Ta的常见变量们===
  NR 当前处理行数
  NR 当前处理行数


第29行: 第31行:
<br />
<br />


=== Example ===
===Example===


==== awk排除第一行然后输出 ====
====awk排除第一行然后输出====
  awk '{if(NR>1)print $0}'
  awk '{if(NR>1)print $0}'


==== 对于多个docker images用一行命令retag然后push到指定registry下的指定namespace ====
====对于多个docker images用一行命令retag然后push到指定registry下的指定namespace====
  docker images| awk '/string/{gsub("origin_registry/origin_ns","registry/ns",$0);printf "docker tag "$3" "$1":"$2";docker push "$1":"$2"\n"}'|sh
  docker images| awk '/string/{gsub("origin_registry/origin_ns","registry/ns",$0);printf "docker tag "$3" "$1":"$2";docker push "$1":"$2"\n"}'|sh
将string替换成需要筛选过滤的image (可选)
将string替换成需要筛选过滤的image (可选)
第42行: 第44行:
执行前可以将最后的 <code>|sh</code> 去掉以debug命令
执行前可以将最后的 <code>|sh</code> 去掉以debug命令
[[分类:Linux]]
[[分类:Linux]]
__强显目录__

2022年3月25日 (五) 01:57的版本

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客

awk内置字符串函数

gsub(r,s)    在整个$0中用s替代r
gsub(r,s,t)    在整个t中用s替代r
index(s,t)    返回s中字符串t的第一位置
length(s)    返回s长度
match(s,r)    测试s是否包含匹配r的字符串
split(s,a,fs)    在fs上将s分成序列a
sprint(fmt,exp)    返回经fmt格式化后的exp
sub(r,s)    用$0中最左边最长的子串代替s
substr(s,p)    返回字符串s中从p开始的后缀部分
substr(s,p,n)    返回字符串s中从p开始长度为n的后缀部分 详细说明一下各个函数的使用方法。


awk和Ta的常见变量们

NR 当前处理行数
FNR 在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数
NF 当前处理行总字段数


Example

awk排除第一行然后输出

awk '{if(NR>1)print $0}'

对于多个docker images用一行命令retag然后push到指定registry下的指定namespace

docker images| awk '/string/{gsub("origin_registry/origin_ns","registry/ns",$0);printf "docker tag "$3" "$1":"$2";docker push "$1":"$2"\n"}'|sh

将string替换成需要筛选过滤的image (可选)

按需修改"origin_registry/origin_ns" 和 "registry/ns"参数为实际需要执行即可

执行前可以将最后的 |sh 去掉以debug命令