awk,分隔符编辑截取字符

输入字段分隔符:awk的内置变量FS中保存了输入字段分隔符的值。使用FS的默认值时,awk用空格或制表符来分隔字段,并且删除各字段前多余的空格或制表符。可以通过在BEGIN语句中或命令行上赋值来改变FS的值。接下来我们就要在命令行上给FS指定一个新的值。在命令行上改变FS的值需要使用-F选项,后面指定代表新分隔符的字符。

从命令行改变字段分隔符:范例中演示了如何使用-F选项在命令行中改变输入字段分隔符。

cat employees
Tom Jones: 4424: 5 / 12 / 66: 543354
Mary Adams: 5346: 11 / 4 / 63: 28765
Sally Chang: 1654: 7 / 22 / 54: 650000
Billy Black: 1683: 9 / 23 / 44: 336500
$ awk  -F'/Tom Jones/{print $1,$2}' employees
Tom Jones  4424

说明:-F选项用来在命令行重新设置输入字段分隔符的值。当冒号紧跟在-F选项的后面时,awk 就会在文件中查找冒号,用以分隔字段。

使用多个字段分隔符:你可以指定多个输入字段分隔符。如果有多个字符被用于字段分隔符FS,则FS对应是一个正则表达式字符串,并且被括在方括号中。下面的范例中,字段分隔符是空格、冒号或制表符。

$ awk  -F '[ :\t]'  '{print $1,$2,$3}' employees
Tom Jones  4424
Mary Adams  5346
Sally Chang  1654
Billy Black  1683

说明:-F选项后面跟了一个位于方括号中的正则表达式,当遇到空格、冒号或制表符时,awk会把它当成字段分隔符。这个表达式两头加了引号,这样就不会被shell当成自己的元字符来解释(注意, shell使用方括号来进行文件名扩展)。

输出字段分隔符:默认的输出字段分隔符是单个空格,被保存于awk的内置变量OFS中。此前的所有例子中,我们都是用print语句把输出打印到屏幕上。因此,无论OFS如何设置,print语句中用于分隔字段的逗号,在输出时都被转换成OFS的值。如果用OFS的默认值,则$1和$2之间的逗号会被转换为单个空格,print函数打印这两个字段时会在它们之间加一个空格。

如果没有用逗号来分隔字段,则输出结果中的字段将堆在一起。另外,OFS的值可以改变。

参考资料:http://www.linuxawk.com/jiaocheng/116.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值