首页 > 解决方案 > sed 用文件分隔符替换文本

问题描述

我的文件有多个这样的列

A   B   C (jan)   D   E   F (feb)   G (mar)   H

(即 A 和 B、B 和 C、(jan) 和 D 之间有制表符,但 C 和 (jan) 之间有一个空格。我只想用下划线替换那些空格。

所以,输出会像

A   B   C_(jan)   D   E   F_(feb)   G_(mar)   H

任何意见?

标签: linuxsed

解决方案


只需删除括号(替换为空格以保持位置不变)

$ sed 's/[()]/ /g' file
A       B       C  jan  D       E       F  feb  G  mar  H

也删除内容

$ sed -E 's/\([^)]+\)//g' file
A       B       C       D       E       F       G       H

不清楚你问了什么。

仍然不清楚您想要什么,您说要删除括号,但示例显示了它们。

这里还有两个变体

$ sed -E 's/ (\([^)]+\))/_\1/g' file
A       B       C_(jan) D       E       F_(feb) G_(mar) H

$ sed -E 's/ \(([^)]+)\)/_\1/g' file
A       B       C_jan   D       E       F_feb   G_mar   H

推荐阅读