awk OFS问题说明

awk可以定义输出的分隔符,其中默认的输出分隔符OFS为空格。下面通过例子简单的介绍下OFS的应用。

1

echo "aaa bbb ccc" | awk -v OFS="|" '{print $0}'

aaa bbb ccc

echo "aaa bbb ccc" | awk -v OFS="|" '{$1=$1;print $0}'

aaa|bbb|ccc

通过上面的例子可以发现的是在定义了OFS之后,处理的文本并没有按照我们的预想一样进行正确的输出,而是第二次增加了$1=$1之后,才能输出。这是为什么呢?因为OFS是对字段进行操作的,只有我们队字段进行了操作,上面的结果才能正确的显现出来。除了利用$1=$1之外,我们还可以利用NF+=0同样可以实现类似的效果。

2

#

1

2

3

#

4

5

#

6

7

8

9

#

想进行输出的结果为

1 2 3

4 5

6 7 8 9

处理的方式如下

awk ‘{RS=”#\n”;ORS=”\n”;OFS=” ”;}NR!=1{$1=$1;print $0}’ file

1 2 3

4 5

6 7 8 9

解析:上面原来文本的分隔符可以看做是”#\n”,重新定义记录分隔符的话可以定义为直接的回车符,字段的分隔符可以设置为空格。后面的$1=$1对字段操作,使OFS的定义生效。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值