博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk支持多个记录分隔符的写法
阅读量:7117 次
发布时间:2019-06-28

本文共 1127 字,大约阅读时间需要 3 分钟。

awk的-F参数可以指定新的记录分隔符,有些时候可能需求指定多个分隔符,比如下面的内容

width:720 height:360

如果需要取出width和height后面的值的话,一般大家会这样做,即做两次awk操作

# echo "width:720 height:360" | awk '{print $1;print $2}' | awk -F: '{print $2}' 720 360

其实呢,通过在awk中指定两个记录分隔符(空格和:),即可一次性的提取出width和height后面的值,在awk中支持多个记录分隔符的写法如下

# echo "width:720 height:360" | awk -F'[ :]' '{print $2,$4}' 720 360

不过,一般像下面这样写,多一个加号表明将连续出现的记录分隔符当做一个来处理

# echo "width:720 height:360" | awk -F'[ :]+' '{print $2,$4}' 720 360

可以尝试在height前面再增加一个空格,各位可以自己去命令行下尝试下

# echo "width:720  height:360" | awk -F'[ :]' '{print $2,$4}' 720 height # echo "width:720  height:360" | awk -F'[ :]+' '{print $2,$4}' 720 360

注意:

在awk中,当记录分隔符指定为空字符串时,awk会将多个连续的空白看做一个单一的记录分隔符。此外,awk还会忽略开头和结尾处的空白。

awk支持正则表达式形式的记录分隔符,你可以改成其它的正则表达式来进行测试。上面虽然介绍了awk中使用多个记录分隔符的写法,但是这些记录分隔符都是单个字符,如果记录分隔符是个字符串怎么办呢?

之前说过,awk支持正则表达式形式的记录分隔符,那就写个正则表达式就好,比如要指定分隔符为one和two

# echo "i have two apples and one banana" | awk -F'one|two' '{for(i=1;i<=NF;i++)print i,"="$i}' 1 =i have 2 = apples and 3 = banana

原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28266791&id=5730480

本文转自 Linux_woniu 51CTO博客,原文链接:http://blog.51cto.com/linuxcgi/1965266

转载地址:http://sjsel.baihongyu.com/

你可能感兴趣的文章
C++Primer第5版学习笔记(三)
查看>>
Centos7系统介绍
查看>>
GIT简单实用
查看>>
Sonar - 部署常见问题及解决方法
查看>>
IOS 学习笔记(3) 视图UITabbarController
查看>>
java基础知识(一)
查看>>
浏览器的缓存
查看>>
WinForm Read Excel
查看>>
Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
查看>>
React开发环境搭建
查看>>
jQuery-ui源代码重点难点分析
查看>>
(转)Linux传输大文件(分割传输)
查看>>
1003. 我要通过!(20)
查看>>
phpstudy for linux版环境安装
查看>>
MinGW GCC 7.1.0 2017年6月份出炉啦
查看>>
二叉树的实现(Java语言描述)
查看>>
Json Datable Convert
查看>>
微信小程序制作-随笔4
查看>>
adt 22.6出现的问题
查看>>
Struts2(补充)
查看>>