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的定义生效。