awk处理字符串分割


awk模式

BEGIN 和 END,BEGIN 被放置在没有读取任何数据之前,而 END 被放置在所有的数据读取完成以后执行

体现如下:
BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作
{}: 逐行处理
END{}: 处理完最后一行文本后执行,一般用来处理输出结果

分割字符串

awk规定引用系统变量必须使用单引号加双引号,即'"$sysvar"'这样的格式,

但是split函数也需要双引号来定界,但这个双引号又不能让sh解释,而应留给awk来解释,所以使用了\"和\"组成的双引号

s="0,1,2,3"
awk 'BEGIN{split('"\"$s\""',myarray,","); for(i in myarray) {if(myarray[i]>1) print myarray[i]}}'

输出2 3

分割字符串后与文件中字符匹配

文件内容:

xx|yy|000|aa|0|cc|cc|cc|

对于上述内容如果第5个字段可以匹配字符串s的字符,就打印输出,否则滤掉

s="0,1,2,3"
array=(${s//,/ })
#echo "${array[@]}"
awk -F '|' 'BEGIN{split('"\"$s\""',myarray,",")} {for(i in myarray) {if($5 == myarray[i])print $0}}' text.txt


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM