首页 > 解决方案 > 如何在使用值打印时删除 awk 空间

问题描述

我有一个 test.csv

#cat test.csv
a.b.c.d
a.b
a.b.c
a-a.b.c          
a-a.b

(1) 我正在尝试打印第一个点之后的所有值,并且 (2) 不得打印最后一个点。

我在下面尝试但它提出了空格,实际文件大约有 10 亿条记录,知道如何在没有点的情况下打印,

#cat test.csv | awk -F. '{print $2,".",$3}' 
b . c
b . 
b . c
b . c
b . 

期望的输出

b.c.d
b
b.c
b.c          
b

标签: awk

解决方案


输出中的空格是因为您告诉 awk 添加空格。print 语句中的每一个,都是您告诉 awkOFS在输出中的该位置添加变量的值(默认情况下为单个空白字符)。代替:

awk -F. '{print $2,".",$3}'

尝试以下任何一种:

awk -F. '{print $2"."$3}'
awk 'BEGIN{FS=OFS="."} {print $2,$3}'

要使用 awk 获得所需的输出,可以:

awk '{sub(/[^.]*\./,"")}1'

但我真的建议你使用为这项任务设计的工具,切:

cut -d'.' -f2-

推荐阅读