我有一個非常大的以冒號分隔的文件,其中包含兩列:
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