我有一个非常大的以冒号分隔的文件,其中包含两列:
dhsj fdksjdk:dndkdlkfkd
shfdosod dkjsosjd:dkj dosjeod
dhswisoaidodisbw: dhsoi wjdos
fjfdododjfideefkjso sn:fhfdkd dkdjdf
如果第一列包含空格,我需要将其删除(即将文本折叠在一起):
dhsjfdksjdk:dndkdlkfkd
shfdosoddkjsosjd:dkj dosjeod
dhswisoaidodisbw: dhsoi wjdos
fjfdododjfideefkjsosn:fhfdkd dkdjdf
换句话说,冒号左侧的所有内容都需要删除空格,而冒号右侧的所有内容则保持不变。
我知道如何使用来cut -d ":" f1
提取第一列并tr -d '[[:blank:]]'
过滤掉空格或制表符,但随后我必须将该列放回文件中,这似乎是一种迂回的做事方式。
在这里做我想做的事情最有效的方法是什么?
答案1
像那样:
$ awk -F: '{gsub(/ /, "", $1); print $1 FS $2}' FILE
dhsjfdksjdk:dndkdlkfkd
shfdosoddkjsosjd:dkj dosjeod
dhswisoaidodisbw: dhsoi wjdos
fjfdododjfideefkjsosn:fhfdkd dkdjdf